外部アプリケーションから Windows フォーム テキスト ボックスのコンソール出力をキャプチャする
このガイドでは、.NET のプロセス管理機能を使用して、別のプログラムのコンソール出力を Windows フォーム アプリケーション内の TextBox にリダイレクトする方法を説明します。
実装手順:
Process
オブジェクトをインスタンス化します。StartInfo
プロパティを設定して、外部プログラムのパス (FileName
) を指定し、シェル実行を無効にし (UseShellExecute = false
)、標準出力とエラー リダイレクトを有効にします (RedirectStandardOutput = true
) 、RedirectStandardError = true
)。 また、イベント発生 (EnableRaisingEvents = true
) を有効にします。OutputDataReceived
イベントをサブスクライブします。このイベント ハンドラーは、リダイレクトされた出力ストリームを受け取ります。このプロセスを示す C# の例は次のとおりです。
<code class="language-csharp">void Method() { var process = new Process(); process.StartInfo.FileName = @"C:\ConsoleApp.exe"; // Replace with your console app's path process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.EnableRaisingEvents = true; process.OutputDataReceived += Process_OutputDataReceived; process.Start(); process.BeginErrorReadLine(); process.BeginOutputReadLine(); } private void Process_OutputDataReceived(object sender, DataReceivedEventArgs e) { // Update the TextBox with the received data (e.Data) on the UI thread. if (e.Data != null) { this.BeginInvoke((MethodInvoker)delegate { this.textBox1.AppendText(e.Data + Environment.NewLine); // Assuming your TextBox is named textBox1 }); } }</code>
"C:ConsoleApp.exe"
を外部コンソール アプリケーションへの実際のパスに置き換えてください。 BeginInvoke
メソッドは、TextBox が UI スレッド上で安全に更新されることを保証し、クロススレッド例外を防ぎます。
以上がコンソール出力を Windows フォーム テキストボックスにリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。