【问题标题】:Capture output from unrelated process捕获无关进程的输出
【发布时间】:2009-01-09 18:47:03
【问题描述】:

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

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

【问题讨论】:

    标签: c#


    【解决方案1】:

    如果您是启动进程的人,您可以重定向进程的标准输出/标准错误(标准输出/错误流)。例如,请查看this

    捕获不是由您启动的进程的输出流,那是完全不同的事情。我不确定它是否可以完成。

    但如果你对这两个应用的源代码都有控制权,还有其他的通信方式,比如管道/远程处理/WCF等等……

    【讨论】:

      【解决方案2】:

      你可以这样做:

          Process[] p = Process.GetProcessesByName("myprocess.exe");
      
          StreamReader sr = p[0].StandardOutput;
      
          while (sr.BaseStream.CanRead)
          {
              Console.WriteLine(sr.ReadLine());
          }
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-04-12
          • 2016-07-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-02-23
          • 2017-11-24
          • 2011-02-01
          相关资源
          最近更新 更多