Чтобы ответить на исходный вопрос, чтобы получить дескриптор процесса по его 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 не позволяет своей цели очищаться и выходить в допустимом состоянии. Подумайте дважды, прежде чем использовать его.