VC 通過程序名 殺掉程序 (KillProcessFromName註釋版)
阿新 • • 發佈:2018-12-30
//kill程序from名字 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; }