结束进程

以前用过向窗体发送WM_CLOSE消息,今见内存快照-->进程遍历-->获取进程id-->进程句柄-->关闭进程。如下:

bool FileClient::CloseProcess(char* sProcessName)
{
if(sProcessName==NULL)
{
returnfalse;
}
PROCESSENTRY32pe32;
pe32.dwSize= sizeof(pe32);

//进程快照
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

if (hProcessSnap == INVALID_HANDLE_VALUE)
{
return false;
}

DWORD hMsDevId= 0;

//进程遍历
BOOL bMore= ::Process32First(hProcessSnap,&pe32);
while (bMore)
{
if(stricmp(pe32.szExeFile,sProcessName)==0)
{
hMsDevId=pe32.th32ProcessID;
break;
}
bMore= ::Process32Next(hProcessSnap,&pe32);
}
//清除快照
::CloseHandle(hProcessSnap);

//结束进程
if(hMsDevId != 0)
{
intintResult;
intResult= 0;
HANDLE hProcess= OpenProcess(PROCESS_TERMINATE,FALSE,hMsDevId);
WaitForSingleObject(hProcess, 5000);
intResult= ::TerminateProcess(hProcess,4);

if(intResult != 0)
{
::Sleep(1000);

returntrue;
}
else
{
returnfalse;
}

}
else
{
returntrue;
}

}

你可能感兴趣的:(进程)