我目前正在将服务器/客户端聊天程序作为C#中的控制台应用程序。我正在处理命令(/ disconnect,/ about等),我想做一个/ savelog命令。
我的问题是,如何将整个控制台输出写入.txt文件?我已经知道在检测到命令时如何调用该函数,但我该如何实际完成这项工作呢?
例如:
'>>已建立连接
'>>消息:嗨
'>>(服务器)消息:你好
'>>消息:/ savelog
'>>讯息:SAVED TO dir
答案 0 :(得分:2)
FileStream fstream = new FileStream("out.txt", FileMode.Create);
var writer = new StreamWriter(fstream);
writer.AutoFlush = true;
Console.SetOut(writer);
Console.SetError(writer);
并参考这个:Source
答案 1 :(得分:0)
.NET框架不包含用于读取控制台窗口内容的机制。如果您确实需要这样做,则需要直接使用Windows API。
您需要的特定API函数是ReadConsoleOutputCharacter
,它会将控制台缓冲区中的字符块复制到数组中。有一个很好的例子,说明如何在PInvoke.Net上使用它。
但是......如果您需要记录,则应在将数据写入屏幕时完成。依赖于控制台状态不一定足够,因为有各种各样的事情可能导致控制台缓冲区中包含意外数据。