捕获不相关进程的输出

时间:2009-01-09 18:47:04

标签: c#

我只是想知道是否有可能捕获在Windows上运行的单独进程的输出?

例如,如果我有一个运行的控制台应用程序,我可以运行第二个应用程序,一个表单应用程序,并让该应用程序捕获控制台应用程序的输出并将其显示在文本框中吗?

3 个答案:

答案 0 :(得分:3)

如果您正在启动进程,则可以重定向进程的stdout / stderr(标准输出/错误流)。有关示例,请查看this

捕获未由您启动的进程的输出流,嗯,这是完全不同的事情。我不确定是否可以做到。

但如果您可以控制两个应用程序的源代码,还有其他通信方式,如管道/远程处理/ WCF等等......

答案 1 :(得分:1)

你可以这样做:

    Process[] p = Process.GetProcessesByName("myprocess.exe");

    StreamReader sr = p[0].StandardOutput;

    while (sr.BaseStream.CanRead)
    {
        Console.WriteLine(sr.ReadLine());
    }

答案 2 :(得分:0)

选择的答案远非正确。 首先是p [0] .StandardOutput已经是一个StreamReader 其次,你无法读取其他进程的StandardOutput,你会收到异常!