从外部应用程序捕获 Windows 窗体文本框中的控制台输出
本指南演示如何使用 .NET 的进程管理功能将单独程序的控制台输出重定向到 Windows 窗体应用程序中的文本框。
实施步骤:
Process
对象来表示外部控制台应用程序。StartInfo
属性以指定外部程序的路径 (FileName
)、禁用 shell 执行 (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中文网其他相关文章!