2011-10-25 10 views
6

外部ライブラリ(.dll)を使用していますが、コンストラクタを含むメソッドの一部は、標準出力(a.k.aコンソール)に書き込むものがコンソールアプリケーションで使用されていたためです。しかし、私はそれを私のWindowsフォームアプリケーションに組み込もうとしているので、この出力をキャプチャして好きなように表示したいと思います。私。私のウィンドウ内の "ステータス"テキストフィールド。標準出力の内容をC#で取得する

私が見つけたのはProcessStartInfo.RedirectStandardOutputでしたが、例では追加のアプリケーション(.exe)で使用されていたため、私のニーズに合わないようです。私は外部アプリケーションを実行していない、私はちょうどdllライブラリを使用しています。

答えて

7

StringWriterを作成し、それを標準出力に設定します。さて、コンソールに出力何かにStringWriterに挿入されます

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

、とあなたはあなたがWinフォームを持っていた状況があったと述べたので、そう、あなたはtextBox1.AppendText(stringw.ToString());(のような何かを行うことができstringw.ToString()を呼び出すことにより、いつでもその内容を取得することができますテキストフィールド)を使用して、テキストボックスの内容を設定します。

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(); 
関連する問題