C #: запускать внешнюю консольную программу как скрытую - PullRequest
14 голосов
/ 13 декабря 2010

Может кто-нибудь сказать мне, как порождать другое консольное приложение из приложения Winforms, но (A) не показывает окно консоли на экране, и (B) все еще получает стандартный вывод приложения? В настоящее время у меня есть что-то вроде следующего:

  Process SomeProgram = new Process();
  SomeProgram.StartInfo.FileName = @"c:\foo.exe";
  SomeProgram.StartInfo.Arguments = "bar";
  SomeProgram.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
  SomeProgram.StartInfo.UseShellExecute = false;
  SomeProgram.StartInfo.RedirectStandardOutput = true;
  SomeProgram.Start();
  SomeProgram.WaitForExit();
  string SomeProgramOutput = SomeProgram.StandardOutput.ReadToEnd();

Если я установил для RedirectStandardOutput значение false, консольное приложение будет скрыто, как и ожидалось, но я не могу получить стандартный выводимый текст. Однако, как только я установил для RedirectStandardOutput значение true, окно перестает быть скрытым, хотя я могу получить вывод программы.

Итак, я знаю, как заставить консольное приложение работать скрытно, и я знаю, как получить вывод программы, но как мне заставить его выполнять оба действия?

Множество ТИА

Ответы [ 2 ]

34 голосов
/ 13 декабря 2010

Вам не хватает свойства CreateNoWindow , которое в вашем случае должно быть установлено на true .

2 голосов
/ 10 ноября 2015

Я думаю, это поможет вам:

System.Diagnostics.Process pProcess = new System.Diagnostics.Process();
pProcess.StartInfo.FileName = @"C:\Users\Vitor\ConsoleApplication1.exe";
pProcess.StartInfo.Arguments = "olaa"; //argument
pProcess.StartInfo.UseShellExecute = false;
pProcess.StartInfo.RedirectStandardOutput = true;
pProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
pProcess.StartInfo.CreateNoWindow = true; //not diplay a windows
pProcess.Start();
string output = pProcess.StandardOutput.ReadToEnd(); //The output result
pProcess.WaitForExit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...