Можно ли перехватить / перенаправить стандартный вывод процесса, который я не запустил, в .net? - PullRequest
5 голосов
/ 07 июня 2011

Если я знаю идентификатор процесса, есть ли какой-то механизм в .net (или pinvoke в качестве крайней меры) для захвата / перенаправления стандартного вывода процесса, который я не запустил?

Ответы [ 3 ]

1 голос
/ 07 июня 2011

Вы можете AttachConsole вашего процесса к консоли другого процесса, а затем использовать обычные консольные функции ввода-вывода для чтения и записи из него.

Не забудьте использовать FreeConsole , чтобы сначала отсоединиться от текущей консоли процесса.

0 голосов
/ 07 июня 2011

РЕДАКТИРОВАТЬ : Похоже, что это действительно не работает, на что указывает другой ответ в этой теме.

Я лично не пробовал это, но, кажется, с тех пор, как был принят ответ, что это работает.

0 голосов
/ 07 июня 2011

Насколько я знаю, вы не можете сделать это в .NET, вы можете перенаправить выходные данные для процессов, которые вы запускаете только через ProcessStartInfo Class .

Кроме того, насколько я знаю, вы вообще не можете перенаправить ввод / вывод после запуска процесса, это может сделать только сам процесс.

Вы можете присоединить вызывающий процесс к консоли указанного процесса через Функция AttachConsole .

...