我正在生成一个子进程,它在一个可见的控制台窗口中运行(它是运行MSBuild的批处理文件),我希望该进程生成的输出能够显示在可见的控制台窗口中,并且捕获该输出,以便我可以在代码中进行处理。我已经阅读了几个其他问题和MSDN文档,涉及到ProcessStartInfo.RedirectStandardOutput等内容,我可以从重定向的流中捕获输出并在代码中进行处理:
Process msBuild = new Process();
msBuild.StartInfo.FileName = "Build.bat";
msBuild.StartInfo.UseShellExecute = false;
msBuild.StartInfo.RedirectStandardOutput = true;
msBuild.Start();
string output = msBuild.StandardOutput.ReadToEnd();
msBuild.WaitForExit();
问题在于子进程的输出没有显示在控制台窗口中;当进程运行时,我只看到一个空白的控制台窗口在屏幕上,进程完成后窗口就消失了。
我想我可以隐藏实际的子进程窗口,并显示第二个窗口,只要捕获到输出,就将其写入该窗口,但这似乎比必要的工作还要多。是否有一种方法可以在控制台窗口中显示输出,并在完成处理时仍然捕获它?