{?
//創建進程快照(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;?
}