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





Вы можете перенаправить stdout / stderr (стандартный поток вывода / ошибок) процесса, если вы его запускаете. Для примера взгляните на это.
Захват выходного потока процесса, который был запущен не вами, ну, это совсем другое дело. Я не уверен, что это возможно.
Но если у вас есть контроль над исходным кодом обоих приложений, есть другие способы взаимодействия, такие как каналы / удаленное взаимодействие / WCF и так далее ...
Ты можешь сделать это:
Process[] p = Process.GetProcessesByName("myprocess.exe");
StreamReader sr = p[0].StandardOutput;
while (sr.BaseStream.CanRead)
{
Console.WriteLine(sr.ReadLine());
}
Выбранный ответ далек от правильного. Прежде всего, p [0] .StandardOutput уже является StreamReader. Во-вторых, вы не можете читать StandardOutput других процессов, вы получите исключение!