2014-04-14 5 views
0

Итак, после нажатия кнопки «Запуск» CMD открывается и закрывается сразу после секунды или около того. Как вы можете видеть, я пытаюсь открыть файл .exe через CMD с помощью строки параметров. Она работает, когда я делаю это вручную, но когда я ставлю в C# ...CMD закрывается после второго

System.Diagnostics.ProcessStartInfo proc = new System.Diagnostics.ProcessStartInfo(); 

String host = textBox1.Text; 

String fp = textBox2.Text; 

String port = textBox4.Text; 

String time = textBox5.Text; 

String threads = textBox3.Text; 

String type = "GET"; 

string param = string.Format(" /C {0} start C:/Dos.exe " + host + port + fp + time + threads + type, Environment.NewLine); 

System.Diagnostics.Process.Start("cmd.exe", param).WaitForExit(); 
+0

Первое, что я рекомендую сделать, это [захватить вывод процесса] (https://stackoverflow.com/questions/285760/ как-к-spawn-a-process-and-capture-its-stdout-in-net), а затем опубликовать его здесь. Думаю, это облегчит поиск и устранение неполадок. –

ответ

0

Я думаю, вы должны использовать команду параметр K вместо CI означают

string param = string.Format(" /K {0} start C:/Dos.exe " + host + port + fp + time + threads + type, Environment.NewLine); 
1

Используйте Console.Read() в конец так, что ЦМД ждет для нажатия клавиши до закрытия

0

Вы использовать /C флаг в командной строке для CMD.EXE с последующей возможностью start, это означает, что ваша консоль запускает DOS.EXE программы как separate process, а затем exi ц.

Таким образом, процесс CMD.EXE уже прекращается, когда вы звоните WaitForExit

Если вы хотите ждать на процесс CMD.EXE, то не используйте start вариант

string param = string.Format(" /C {0} C:/Dos.exe " + ....., Environment.NewLine); 

Непонятно, в чем причина добавить новую строку после флага/C

+0

Это похоже на решение. Что следует использовать вместо ** start **? – user3533051

+0

Вы пытались удалить ключевое слово start ?. На моей стороне он открывает консольное окно и ждет. Конечно, консольное окно невозможно использовать, потому что оно ожидает завершения процесса DOS.EXE. Но мне интересно, почему вы не пытаетесь напрямую запустить программу DOS.EXE вместо CMD.EXE, а затем DOS.EXE – Steve

+0

Я попытался запустить Dos.exe напрямую, но то же самое происходит. Кроме того, я получаю сообщение об ошибке при удалении ** start **. Что не так?? – user3533051

Смежные вопросы