當前位置:名人名言大全網 - 笑話故事 - mfc如何徹底退出進程

mfc如何徹底退出進程

BOOL?KillProcessFromName(CString?strProcessName)?

{?

//創建進程快照(TH32CS_SNAPPROCESS表示創建所有進程的快照)?

HANDLE?hSnapShot?=?CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);?

//PROCESSENTRY32進程快照的結構體?

PROCESSENTRY32?pe;?

//實例化後使用Process32First獲取第壹個快照的進程前必做的初始化操作?

pe.dwSize?=?sizeof(PROCESSENTRY32);?

//下面的IF效果同:?

//if(hProcessSnap?==?INVALID_HANDLE_VALUE)無效的句柄?

if(!Process32First(hSnapShot,&pe))?

{?

return?FALSE;?

}?

//將字符串轉換為小寫?

strProcessName.MakeLower();?

//如果句柄有效?則壹直獲取下壹個句柄循環下去?

while?(Process32Next(hSnapShot,&pe))?

{?

//pe.szExeFile獲取當前進程的可執行文件名稱?

CString?scTmp?=?pe.szExeFile;?

//將可執行文件名稱所有英文字母修改為小寫?

scTmp.MakeLower();?

//比較當前進程的可執行文件名稱和傳遞進來的文件名稱是否相同?

//相同的話Compare返回0?

if(!scTmp.Compare(strProcessName))?

{?

//從快照進程中獲取該進程的PID(即任務管理器中的PID)?

DWORD?dwProcessID?=?pe.th32ProcessID;?

HANDLE?hProcess?=?::OpenProcess(PROCESS_TERMINATE,FALSE,dwProcessID);?

::TerminateProcess(hProcess,0);?

CloseHandle(hProcess);?

return?TRUE;?

}?

scTmp.ReleaseBuffer();?

}?

strProcessName.ReleaseBuffer();?

return?FALSE;?

}