2013-06-19 1 views
0

У меня есть форма и кнопка Windows. При нажатии на кнопку я запускаю файл bat:System.Diagnostics.Process

 //execute batch 
     System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
     proc.StartInfo.FileName = "test.bat"; 
     proc.StartInfo.WorkingDirectory = Path.GetDirectoryName(path); 
     proc.Start(); 
     proc.WaitForExit(); 

Я хочу, чтобы у вас была возможность снова нажать кнопку и прекратить выполнение биты. Сейчас форма Windows теряет фокус, и я не могу нажать кнопку. Как остановить процесс из Windows Form?

Благодаря

+0

вы должны будете избавиться от WaitForExit(). Вместо этого используйте событие Process.Exited. –

ответ

0

попробовать

this.Focus(); 

после

proc.Start(); 
+0

Все еще не остановить процесс ... – user1663661

+0

Ну, вопрос не очень ясен, вам нужно сосредоточиться на форме, чтобы иметь возможность нажать кнопку STOP, или вам нужно создать кнопку остановки? – Moondustt

0

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

Чтобы использовать его, вы должны удалить WaitForExit после запуска и сохранить переменную proc в качестве переменной уровня формы. Затем, когда вам нужно, чтобы закрыть процесс, который вы могли бы попробовать с

if(!proc.HasExited) 
{ 
    proc.Kill(); 
    proc.WaitForExit(); 
} 
proc.Dispose(); 
proc = null; 

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

для задачи фокусировки, учитывая, что это пакетный файл, который вы можете использовать опцию CreateNoWindow, чтобы остановить окно от появления

System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
    proc.StartInfo.FileName = "cmd.exe"; 
    proc.StartInfo.Arguments = "/C test.bat"; 
    proc.StartInfo.WorkingDirectory = @"c:\temp"; 
    proc.StartInfo.CreateNoWindow = true; 
    proc.StartInfo.UseShellExecute = false; 
    proc.Start(); 

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

  • Нет связанных вопросов^_^