捕获c#中标准输出的内容

本文关键字:标准输出 捕获 | 更新日期: 2023-09-27 18:12:31

我正在使用外部库(.dll),它的一些方法(包括构造函数)将内容写入标准输出(又名控制台),因为它旨在与控制台应用程序一起使用。然而,我正试图将其合并到我的windows窗体应用程序中,所以我想捕获此输出并以我喜欢的方式显示它。即。"状态"文本字段在我的窗口

所有我能找到的是ProcessStartInfo。RedirectStandardOutput,虽然显然它不适合我的需要,因为它在示例中与其他应用程序(.exe)一起使用。我不执行外部应用程序,我只是使用一个dll库。

捕获c#中标准输出的内容

创建StringWriter,并设置其标准输出

StringWriter stringw = new StringWriter();
Console.SetOut(stringw);

现在,任何打印到控制台的内容将被插入到StringWriter中,并且您可以通过调用stringw.ToString()随时获得其内容,因此您可以执行类似textBox1.AppendText(stringw.ToString());的操作(因为您说您有一个winform和一个状态文本字段)来设置文本框的内容。

将使用控制台。SetOut方法能让你足够接近你想要的吗?

它将为您提供将写入控制台的文本写入流的能力,您可以在任何地方写出来。

http://msdn.microsoft.com/en-us/library/system.console.setout.aspx

节选自上面的链接:

Console.WriteLine("Hello World");
FileStream fs = new FileStream("Test.txt", FileMode.Create);
// First, save the standard output.
TextWriter tmp = Console.Out;
StreamWriter sw = new StreamWriter(fs);
Console.SetOut(sw);
Console.WriteLine("Hello file");
Console.SetOut(tmp);
Console.WriteLine("Hello World");
sw.Close();