Захватить выход из несвязанного процесса - PullRequest
3 голосов
/ 09 января 2009

Мне было просто интересно, возможно ли захватить вывод отдельного процесса, работающего в Windows?

Например, если у меня запущено консольное приложение, могу ли я запустить второе приложение, приложение форм, и заставить это приложение захватывать выходные данные из консольного приложения и отображать его в текстовом поле?

Ответы [ 3 ]

3 голосов
/ 09 января 2009

Вы можете перенаправить stdout / stderr (стандартный поток вывода / ошибок) процесса, если вы тот, кто его запускает. Для примера рассмотрим this .

Захват потока вывода процесса, который вы не запустили, ну, это совсем другое дело. Я не уверен, что это можно сделать.

Но если у вас есть контроль над исходным кодом обоих приложений, есть другие способы связи, такие как pipe / remoting / WCF и т. Д.

1 голос
/ 09 января 2009

Вы можете сделать это:

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

    StreamReader sr = p[0].StandardOutput;

    while (sr.BaseStream.CanRead)
    {
        Console.WriteLine(sr.ReadLine());
    }
0 голосов
/ 05 марта 2011

Выбранный ответ далек от правильности. Прежде всего, p [0] .StandardOutput уже является StreamReader Во-вторых, вы не можете прочитать StandardOutput других процессов, вы получите исключение!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...