Как закрыть другой процесс из С#
Мне нужно закрыть другой Process (Windows Media Encoder) из приложения С#, и до сих пор я могу сделать это с помощью
Process.GetProcessesByName("wmenc.exe")[0].CloseMainWindow();
Но если приложение медиакодера работает потоковым или записывающим, на экране появляется диалоговое окно:
"Вы действительно хотите остановить кодирование?"
Итак, есть способ ответить или нажать кнопку Да из кода?
[Изменить]
Многие пользователи отвечают с помощью Process.kill()
, но это не опция, потому что Process.Kill();
немедленно завершает Кодер Windows Media, а Кодировщик Windows Media не будет завершать файл который является Writing, что заставляет меня Reindex Video File. Так что я не могу использовать Process.Kill();
Ответы
Ответ 1
Здесь находится сообщение SO, которое запрашивает и отвечает как управлять другими приложениями из .NET. В принятом ответе используется только четыре строки кода для получения окна и отправки нажатия клавиши определенной кнопки в этом окне. Я думаю, что это может быть лучшим выбором для чистого закрытия приложения.
Ответ 2
Process[] runningProcesses = Process.GetProcesses();
foreach (Process process in runningProcesses)
{
// now check the modules of the process
foreach (ProcessModule module in process.Modules)
{
if (module.FileName.Equals("MyProcess.exe"))
{
process.Kill();
} else
{
enter code here if process not found
}
}
}