【发布时间】:2009-01-09 18:47:03
【问题描述】:
我只是想知道是否可以捕获在 Windows 上运行的单独进程的输出?
例如,如果我正在运行一个控制台应用程序,我是否可以运行第二个应用程序、一个表单应用程序,并让该应用程序捕获控制台应用程序的输出并将其显示在文本框中?
【问题讨论】:
标签: c#
我只是想知道是否可以捕获在 Windows 上运行的单独进程的输出?
例如,如果我正在运行一个控制台应用程序,我是否可以运行第二个应用程序、一个表单应用程序,并让该应用程序捕获控制台应用程序的输出并将其显示在文本框中?
【问题讨论】:
标签: c#
如果您是启动进程的人,您可以重定向进程的标准输出/标准错误(标准输出/错误流)。例如,请查看this。
捕获不是由您启动的进程的输出流,那是完全不同的事情。我不确定它是否可以完成。
但如果你对这两个应用的源代码都有控制权,还有其他的通信方式,比如管道/远程处理/WCF等等……
【讨论】:
你可以这样做:
Process[] p = Process.GetProcessesByName("myprocess.exe");
StreamReader sr = p[0].StandardOutput;
while (sr.BaseStream.CanRead)
{
Console.WriteLine(sr.ReadLine());
}
【讨论】:
所选答案远非正确。 首先 p[0].StandardOutput 已经是一个 StreamReader 其次,不能读取其他进程的StandardOutput,会收到异常!
【讨论】: