Tuesday, March 15, 2011

Capture output from unrelated process

I was just wondering if it is possible to capture the output of a separate process running on windows?

For instance if i have a console app running, could i run a second app, a forms app, and have that app capture the output from the console app and display it in a text box?

From stackoverflow
  • so the console app would be running the whole time, and the forms app would occasionally poll it to see what its latest output is? Or could the forms app just call the console app executable and get a result?

  • You can redirect the stdout / stderr (standary out put / error stream) of a process if you are the one starting it. For an example take a look at this.

    Capturing the output stream of a process which was not started by you, well, that is whole different matter. I'm not sure it can be done.

    But if you have control over the source code of both apps, there are other ways to communicate, like pipes / remoting / WCF, and so on...

  • You can do this:

        Process[] p = Process.GetProcessesByName("myprocess.exe");
    
        StreamReader sr = new StreamReader(p[0].StandardOutput);
    
        while (sr.BaseStream.CanRead)
        {
            Console.WriteLine(sr.ReadLine());
        }
    
    Justin : This does not compile

0 comments:

Post a Comment