C ++ TerminateProcess функция - PullRequest
       29

C ++ TerminateProcess функция

10 голосов
/ 14 марта 2010

Я искал примеры для функции Win32 API C ++ TerminateProcess () , но не смог найти ничего.

Я не очень хорошо знаком с Win32 API в целом, и поэтому я хотел спросить, может ли кто-нибудь здесь, кто лучше меня, показать мне пример,

  • Извлечение дескриптора процесса по его PID, необходимому для его завершения, а затем вызов с ним TerminateProcess.

Если вы не знакомы с C ++, вам также может помочь эквивалент C #.

1 Ответ

18 голосов
/ 15 марта 2010

Чтобы ответить на исходный вопрос, чтобы получить дескриптор процесса по его PID и вызвать TerminateProcess, вам нужен код, подобный следующему:

BOOL TerminateProcessEx(DWORD dwProcessId, UINT uExitCode)
{
    DWORD dwDesiredAccess = PROCESS_TERMINATE;
    BOOL  bInheritHandle  = FALSE;
    HANDLE hProcess = OpenProcess(dwDesiredAccess, bInheritHandle, dwProcessId);
    if (hProcess == NULL)
        return FALSE;

    BOOL result = TerminateProcess(hProcess, uExitCode);

    CloseHandle(hProcess);

    return result;
}

Имейте в виду, что TerminateProcess не позволяет своей цели очищаться и выходить в допустимом состоянии. Подумайте дважды, прежде чем использовать его.

...