2012-04-30 2 views
3

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

, например,

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

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

Возможно ли это? Пожалуйста, помогите

Благодаря Сай синдх

+0

Возможный дубликат [Захват вывода консоли из приложения .NET (C#)] (http://stackoverflow.com/questions/186822/capturing-console-output-from-a-net-application-c) –

+1

, пожалуйста, не забудьте просмотреть переполнение стека для подобных вопросов перед публикацией. Также обратите внимание на предлагаемые вопросы, которые появляются, когда вы создаете свой вопрос. Я почти уверен, что указанный выше вопрос возник бы. –

ответ

10

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

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

1

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

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