2011-10-25 58 views
6

我使用外部庫(.dll),它的一些方法(包括構造函數)將東西寫入標準輸出(a.k.a控制檯),因爲它旨在用於控制檯應用程序。不過,我試圖將它合併到我的Windows窗體應用程序中,所以我想捕獲這個輸出並以我喜歡的方式顯示它。即我的窗口中的「狀態」文本字段。在C#中捕獲標準輸出的內容

我能夠找到的所有程序都是ProcessStartInfo.RedirectStandardOutput,儘管顯然它不符合我的需要,因爲它在示例中與其他應用程序(.exe)結合使用。我不執行外部應用程序,我只是使用一個DLL庫。

回答

7

創建StringWriter,標準輸出設置爲它。

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

現在,什麼都打印到控制檯將被插入到StringWriter的,並且可以通過調用stringw.ToString(),那麼你可以做類似textBox1.AppendText(stringw.ToString());(因爲你說你有一個winform隨時隨地獲取其內容,並有一個狀態文本字段)來設置文本框的內容。

2

會使用Console.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(); 
相關問題