pe是一个PROCESSENTRY32结构体,我用Process32First(hSnap,&pe)和Process32Next(hSnap,&pe)不断依次取出每个进程的信息并用pe接收,每次循环都用if(pe.szExeFile=="taskmgr.exe")作出判断,如果判断出有任务管理器的进程则作出相应的处理。但不知道为什么即使当前存在taskmgr.exe进程但用以上语句依然进不了if块中。如果换成if(pe.szExeFile=="notepad.exe")也同样检测不到有记事本进程的存在,即使记事本已经被打开了。在调试运行下我能清楚看见在某次循环里pe.szExeFile的值确实就是"taskmgr.exe",但就是跳不进去if块里面,我真的百思不得其解。希望有朋友能为我指点迷津,谢谢!!以下是不断检测进程的线程函数的代码:
DWORD WINAPI ThrdFunc(LPVOID lpParameter)
{
HANDLE hSnap;
PROCESSENTRY32 pe;
BOOL bNext;
HANDLE hProcess;
BOOL bSuccess;
DWORD *pExitCode=NULL;
hSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize=sizeof(PROCESSENTRY32);
while(TRUE)
{
bNext=Process32First(hSnap,&pe);
while(bNext)
{
if(pe.szExeFile=="taskmgr.exe")
{
((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->MessageBox("找到你啦!");
hProcess=OpenProcess(PROCESS_TERMINATE,FALSE,pe.th32ProcessID);
bSuccess=GetExitCodeProcess(hProcess,pExitCode);
bSuccess=TerminateProcess(hProcess,*pExitCode);
}
bNext=Process32Next(hSnap,&pe);
}
}
return 0;
}