3

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?

Jason Miesionczek
  • 14,268
  • 17
  • 76
  • 108

3 Answers3

3

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...

Alex Shnayder
  • 1,362
  • 1
  • 13
  • 24
1

You can do this:

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

    StreamReader sr = p[0].StandardOutput;

    while (sr.BaseStream.CanRead)
    {
        Console.WriteLine(sr.ReadLine());
    }
Sameer
  • 2,143
  • 1
  • 16
  • 22
scottm
  • 27,829
  • 22
  • 107
  • 159
0

Selected answer is far from being correct. First of all p[0].StandardOutput is already a StreamReader Secondly, you cannot read StandardOutput of other processes, you will receive an exception!

michalczerwinski
  • 1,069
  • 9
  • 6