Захват исполняемого вывода C# из другой программы C#

Я выполняю программу на С#, т.е. .exe из другой программы на С#. но .exe имеет в своей программе некоторый Console.WriteLine(). Я хочу получить стандартный вывод в моей программе на С#.

Например,

Рассмотрим исполняемый файл C#, то есть 1.exe, и есть еще одна программа 2.cs.

Звоню из 2.cs 1.exe. Теперь есть некоторый вывод, который консоль отображает из 1. exe. Но я хочу, чтобы в моей программе 2.cs был вывод. для отображения информации пользователю.

Является ли это возможным? Пожалуйста помоги

Спасибо, Сай Синдху.


person sai sindhu    schedule 30.04.2012    source источник


Ответы (2)


Вы можете использовать свойство ProcessStartInfo.RedirectStandardOutput.

Process compiler = new Process();
compiler.StartInfo.FileName = "csc.exe";
compiler.StartInfo.Arguments = "/r:System.dll /out:sample.exe stdstr.cs";
compiler.StartInfo.UseShellExecute = false;
compiler.StartInfo.RedirectStandardOutput = true;
compiler.Start();    

Console.WriteLine(compiler.StandardOutput.ReadToEnd());

compiler.WaitForExit();

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardoutput.aspx

person Dor Cohen    schedule 30.04.2012

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

Когда процесс записывает текст в свой стандартный поток, этот текст обычно отображается на консоли. Перенаправляя поток StandardOutput, вы можете манипулировать выводом процесса или подавлять его. Например, вы можете отфильтровать текст, отформатировать его по-другому или записать вывод как на консоль, так и в назначенный файл журнала.

person Matten    schedule 30.04.2012