Как скрыть окно cmd во время запуска пакетного файла?

Как скрыть окно cmd во время запуска пакетного файла?

Я использую следующий код для запуска командного файла

process = new Process(); process.StartInfo.FileName = batchFilePath; process.Start(); 

Если proc.StartInfo.UseShellExecute является ложным , то вы запускаете этот процесс и можете использовать:

 proc.StartInfo.CreateNoWindow = true; 

Если proc.StartInfo.UseShellExecute истинно , то ОС запускает процесс, и вы должны предоставить «подсказку» для процесса через:

 proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 

Однако вызываемое приложение может игнорировать этот последний запрос.

Если вы используете UseShellExecute = false , вам может потребоваться перенаправить стандартный вывод / ошибку, чтобы зафиксировать произведенные записи:

 proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = true; proc.OutputDataReceived += new DataReceivedEventHandler(ProcessOutputHandler); proc.StartInfo.RedirectStandardError = true; proc.ErrorDataReceived += new DataReceivedEventHandler(ProcessOutputHandler); 

И иметь функцию, подобную

 private void ProcessOutputHandler(object sendingProcess, DataReceivedEventArgs outLine) { if (!String.IsNullOrEmpty(outLine.Data)) // use the output outLine.Data somehow; } 

В блоге MSDN есть хорошая страница, CreateNoWindow .

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

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98476 http://support.microsoft.com/?kbid=818858

В соответствии с свойствами процесса у вас есть:

Свойство: CreateNoWindow
Примечания. Позволяет запускать программу командной строки молча. Он не мигает консольным окном.

а также:

Недвижимость: WindowStyle
Примечания. Используйте это, чтобы установить windows как скрытые. Автор часто использовал ProcessWindowStyle.Hidden .

В качестве примера!

 static void LaunchCommandLineApp() { // For the example const string ex1 = "C:\\"; const string ex2 = "C:\\Dir"; // Use ProcessStartInfo class ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.CreateNoWindow = false; startInfo.UseShellExecute = false; startInfo.FileName = "dcm2jpg.exe"; startInfo.WindowStyle = ProcessWindowStyle.Hidden; startInfo.Arguments = "-fj -o \"" + ex1 + "\" -z 1.0 -sy " + ex2; try { // Start the process with the info we specified. // Call WaitForExit and then the using statement will close. using (Process exeProcess = Process.Start(startInfo)) { exeProcess.WaitForExit(); } } catch { // Log error. } } 

Использовать: process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

Это то, что сработало для меня. Когда вы перенаправляете все входные и выходные данные и устанавливаете скрытое окно, оно должно работать

  Process p = new Process(); p.StartInfo.RedirectStandardError = true; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; 
  • Доступ запрещен при получении пути процесса
  • получение PID процесса, начатого Process.start ()
  • Linux: Есть ли что-то похожее на «верх» для ввода-вывода?
  • Как определить программным способом, является ли конкретный процесс 32-разрядным или 64-разрядным
  • Как определить, что начинается с процесса?
  • как изменить имя процесса приложения Java?
  • popen () альтернатива
  • Как проверить, существует ли идентификатор процесса (PID)
  • C # - WCF - межпроцессное взаимодействие
  • В Windows, как я могу изящно попросить запущенную программу завершить работу?
  • Система и прерывания, вызывающие высокий CPU
  • Давайте будем гением компьютера.