Как закрыть другой процесс из C # - PullRequest
15 голосов
/ 18 мая 2011

Мне нужно закрыть другой процесс (кодировщик Windows Media) из приложения C #, и пока я могу сделать это с помощью:

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

Но если приложение Media Encoder выполняет потоковую передачу или запись, оно показываетДиалог при выходе:

«Вы уверены, что хотите прекратить кодирование?»

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

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

Ответы [ 2 ]

4 голосов
/ 18 мая 2011

Вот SO сообщение, которое спрашивает и отвечает , как управлять другими приложениями из .NET. Принятый ответ использует всего четыре строки кода, чтобы открыть окно и отправить нажатие клавиши на определенную кнопку в этом окне. Я думаю, что это может быть лучшим выбором для аккуратного закрытия приложения.

3 голосов
/ 13 марта 2018
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
        }
    }
}
...