您的位置:首页 > 其它

根据进程名来结束程序

2011-07-09 09:43 239 查看
bool Widget::Kill(const QString &name)
{
HANDLE hSnapShot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hSnapShot == 0)
{
return false;
}
PROCESSENTRY32 thePE;
thePE.dwSize = sizeof(PROCESSENTRY32);
//遍历正在运行的第一个系统进程
BOOL Status = Process32First(hSnapShot,&thePE);
BOOL bHaveFlag = FALSE;
DWORD ProcessID = 0;
while(Status)
{
//遍历正在运行的下一个系统进程
Status = Process32Next(hSnapShot,&thePE);
//找到相应的进程 *.exe
if(0 == _tcscmp(QString::fromWCharArray(thePE.szExeFile).toAscii(),name.toAscii()))
    {
bHaveFlag = TRUE;
ProcessID = thePE.th32ProcessID;
//结束指定的进程 ProcessID
if(!TerminateProcess(OpenProcess (PROCESS_TERMINATE||PROCESS_QUERY_INFORMATION,false,ProcessID),0))
{
//MessageBox(NULL, "无法终止指定的进程!", NULL, MB_ICONWARNING||MB_OK);
}
break;
    }
}
CloseHandle(hSnapShot);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: