Убить процесс по имени - PullRequest
       3

Убить процесс по имени

0 голосов
/ 01 февраля 2011

Как убить процесс по имени в Windows только с помощью API-функций?

Ответы [ 4 ]

1 голос
/ 01 февраля 2011
killall yourprocess

http://en.wikipedia.org/wiki/Killall (обратите внимание, что это применимо только к Linux, поскольку вы не указали свою ОС)

1 голос
/ 01 февраля 2011

Если под "убийством" вы подразумеваете завершение с предубеждением, всегда существует TerminateProcess. Я бы посоветовал не использовать его, если вы можете найти другой способ (например, разместить WM_CLOSE в главном окне), потому что загруженные библиотеки DLL не выгружаются должным образом при вызове TerminateProcess, поэтому используемые ресурсы могут не освобождаться.

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

EnumProcesses ()
EnumProcessModules ()
GetModuleFileNameEx ()
GetModuleBaseName ()

и сравнение полученного имени базового модуля с тем, что вы ищете. Но в системе может быть несколько экземпляров имени модуля. Как бы вы различали случаи в этом случае?

0 голосов
/ 17 февраля 2017

В окне cmd вы можете использовать taskkill /F /im cmd.exe для уничтожения всех программ cmd.exe.

Флаг /T указывает taskkill принудительно уничтожать процессы, тогда как taskkill /im cmd.exe изящно выключает его, посылая сигнал об убийстве.

Более подробную информацию о таск-килле можно найти здесь

еще один замечательный инструмент для завершения процессов: wmic

0 голосов
/ 01 февраля 2011

Если вы имеете в виду Windows, используйте ZwQuerySystemInformation и TerminateProcess . Смотрите подробный пример здесь: Как убить процесс с именем

...