killprocess

bool kill_process(LPCTSTR lpProcessName)
{
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hSnap != INVALID_HANDLE_VALUE)
{
PROCESSENTRY32 pe = {sizeof(pe)};
Process32First(hSnap,&pe);
char* exeName = pe.szExeFile;
if (!strcmp(exeName, lpProcessName))
{ //find the target process
HANDLE hTargetProcess = OpenProcess(PROCESS_ALL_ACCESS, false, pe.th32ProcessID);
TerminateProcess(hTargetProcess, 0);
MessageBox(NULL, "AAA", "BBB", MB_OK);
WaitForSingleObject(hTargetProcess, INFINITE);

return true;
}
else
{//keep searching
while(GetLastError() != ERROR_NO_MORE_FILES)
{
Process32Next(hSnap,&pe);
exeName = pe.szExeFile;
if (!strcmp(exeName, lpProcessName))
{//find the target process
HANDLE hTargetProcess = OpenProcess(
PROCESS_ALL_ACCESS,false,pe.th32ProcessID);
TerminateProcess(hTargetProcess,0);
WaitForSingleObject(hTargetProcess,INFINITE);
return true;
}
}
return false;
}
}
else
{//snapshot failed
return false;
}
}

posted @ 2013-04-02 07:34  x@p  阅读(151)  评论(0)    收藏  举报