Подтвердить что ты не робот

Как закрыть другой процесс из С#

Мне нужно закрыть другой Process (Windows Media Encoder) из приложения С#, и до сих пор я могу сделать это с помощью

Process.GetProcessesByName("wmenc.exe")[0].CloseMainWindow();

Но если приложение медиакодера работает потоковым или записывающим, на экране появляется диалоговое окно:

"Вы действительно хотите остановить кодирование?"

Итак, есть способ ответить или нажать кнопку Да из кода?

[Изменить] Многие пользователи отвечают с помощью Process.kill(), но это не опция, потому что Process.Kill(); немедленно завершает Кодер Windows Media, а Кодировщик Windows Media не будет завершать файл который является Writing, что заставляет меня Reindex Video File. Так что я не могу использовать Process.Kill();

4b9b3361

Ответ 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
        }
    }
}