Скрыть окно консоли с Process.Start C #

Я пытаюсь создать процесс на удаленной машине, используя class System.Diagnostics.Process. Я могу создать процесс. Но проблема в том, что создание службы занимает много времени, и отображается консольное окно. Еще одна неприятная вещь: консольное окно отображается поверх моей формы windows, и я не могу выполнять любые другие операции над этой формой. Я установил все свойства, такие как CreateNoWindow = true ,

 proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden 

но все же он показывает окно консоли. даже я перенаправил вывод и ошибки для разделения streamа, но не повезло.

Есть ли другой способ скрыть окно консоли? Пожалуйста, помогите мне.

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

 Process proc = new Process(); proc.StartInfo.UseShellExecute = false; proc.StartInfo.CreateNoWindow = true; proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; proc.StartInfo.FileName = "sc"; proc.StartInfo.Arguments = string.Format(@"\\SYS25 create MySvc binPath= C:\mysvc.exe"); proc.StartInfo.RedirectStandardError = false; proc.StartInfo.RedirectStandardOutput = false; proc.StartInfo.UseShellExecute = false; proc.StartInfo.CreateNoWindow = true; proc.Start(); proc.WaitForExit(); 

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

Вот страница, в которой объясняется, почему для свойства UseShellExecute должно быть установлено значение false.
http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.createnowindow.aspx

В разделе «Примечания» на странице:

Если свойство UseShellExecute истинно или свойства UserName и Password не равны null, значение свойства CreateNoWindow игнорируется и создается новое окно.

 ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = fullPath; startInfo.Arguments = args; startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardError = true; startInfo.UseShellExecute = false; startInfo.CreateNoWindow = true; Process processTemp = new Process(); processTemp.StartInfo = startInfo; processTemp.EnableRaisingEvents = true; try { processTemp.Start(); } catch (Exception e) { throw; } 

Мне не повезло с этим ответом, с процессом (Wix light.exe), по существу выходящим на обед и не возвращающимся домой к обеду. Однако для меня работали хорошо:

 Process p = new Process(); p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; // etc, then start process 

Это должно работать, стараться;


Добавьте ссылку на систему.

 using System.Diagnostics; 

Затем используйте этот код для запуска вашей команды в скрытом окне CMD.

 Process cmd = new Process(); cmd.StartInfo.FileName = "cmd.exe"; cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; cmd.StartInfo.Arguments = "Enter your command here"; cmd.Start(); 

Это не показывает окно:

 Process cmd = new Process(); cmd.StartInfo.FileName = "cmd.exe"; cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; cmd.StartInfo.CreateNoWindow = true; ... cmd.Start(); 
  • Может ли Qt-сигналы вернуть значение?
  • Constexpr Математические функции
  • Программа не выполняет gets () после scanf (), даже используя fflush (stdin)
  • Сигнал C ++ для слота QML в Qt
  • Сфера действия против переменной жизни в C
  • InvalidProgramException / Common Language Runtime обнаружил недопустимую программу
  • Что такое ObservableCollection в .net?
  • Как получить список свойств classа?
  • идея выбора переключателя / образца
  • CMake не находит компилятор Visual C ++
  • Преобразование цели-c typedef в его эквивалент строки
  • Interesting Posts
    Давайте будем гением компьютера.