要捕获具有重叠和事件的控制台程序的输出,可以使用以下方法:
方法1:使用异步方法和事件
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
Process process = new Process();
process.StartInfo.FileName = "your_program.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
process.Start();
process.BeginOutputReadLine();
// 其他代码
process.WaitForExit();
process.Close();
}
static void OutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
if (!String.IsNullOrEmpty(outLine.Data))
{
Console.WriteLine(outLine.Data);
}
}
}
方法2:使用Task和StreamReader
using System;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
Process process = new Process();
process.StartInfo.FileName = "your_program.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
StreamReader reader = process.StandardOutput;
Task outputTask = reader.ReadToEndAsync();
// 其他代码
string output = await outputTask;
Console.WriteLine(output);
process.WaitForExit();
process.Close();
}
}
这些方法可以通过启动一个子进程并重定向其输出流来捕获控制台程序的输出。使用异步方法和事件处理程序或使用Task和StreamReader可以在程序执行期间实时获取输出,并在控制台上显示。
上一篇:捕获具有特定属性的HTML元素