请问为什么我用if(pe.szExeFile=="taskmgr.exe")判断是否有任务管理器的进程但不行呢?

饿半肚 2007-05-20 05:51:33
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;
}
...全文
951 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
三杨 2012-02-08
  • 打赏
  • 举报
回复
谢谢2楼,这个问题难为我很久,终于明白了。谢谢
饿半肚 2007-05-20
  • 打赏
  • 举报
回复
谢谢KeSummer!我以为“==”是已经被重载了可以这样用嘛,谁知道自己犯了低级错误了。不过上面那段代码还有其他的问题,因为运行时还会出错啊。
KeSummer 2007-05-20
  • 打赏
  • 举报
回复
if(pe.szExeFile=="taskmgr.exe")

改成if(strcmp(pe.szExeFile,"Taskmgr.exe")==0)

LZ学什么语言来了?

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧