Как убить процесс из VC ++ - PullRequest
1 голос
/ 05 мая 2010

Я использую компилятор VC ++, я хочу знать, как убить процесс. есть ли функции.

я пытался с TerminateProcess (); но я не мог сделать ...

Ответы [ 3 ]

5 голосов
/ 05 мая 2010

Я не знаю точно, что вы хотите сделать, но вы должны знать, TerminateProcess() просто убивает процесс, не давая ему возможности правильно закрыться.

Возможно, вы захотите сначала отправить WM_CLOSE сообщение приложению, а затем, если оно не отвечает, убить его с помощью TerminateProcess().

У доктора Доббса есть замечательная статья (с образцами), просто здесь .

Возможно, вы захотите взглянуть.

0 голосов
/ 05 мая 2010

Просто чтобы убедиться, что вы все сделали правильно:

  • Используйте OpenProcess, чтобы получить дескриптор процесса из идентификатора процесса (запрашивая PROCESS_TERMINATE права доступа)
  • Позвоните TerminateProcess на эту ручку

Что именно пошло не так с этим подходом?

0 голосов
/ 05 мая 2010

TerminateProcess требует права PROCESS_TERMINATE. Если вы получаете дескриптор процесса из OpenProcess, то параметр dwDesiredAccess должен по крайней мере включать PROCESS_TERMINATE.

Если вы пытаетесь убить процесс с повышенными правами, то ваше приложение (приложение, выполняющее уничтожение) также должно быть повышено.

Какой код ошибки вы получаете от GetLastError()?

...