知道进程id怎么判断进程是否在运行,即进程是否还存在

other123othe 2015-07-23 11:08:10
如题,不知道怎么用代码实现?

谢大神了

...全文
1648 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2015-07-29
  • 打赏
  • 举报
回复
用进程ID判断不靠谱. 完全有可能你记录ID时, 是一个叫QQ.exe的进程. 但当你要判断时, ID对应的QQ.exe已经退出, 然后又有新开的程序game.exe的进程ID与你记录的ID相同. 这时判断, 你认为原来的QQ还在, 实际上已经不在了.
飞翔的薄荷 2015-07-29
  • 打赏
  • 举报
回复
引用 5 楼 Sandrer 的回复:
OpenProcess 判断返回要快些
+1
Eleven 2015-07-25
  • 打赏
  • 举报
回复
你得先搞清楚你的ID是你指定的进程的ID吗?即这个ID有效?因为ID是系统公共的号码池中分配的,其它每个进程都有可能用到这个ID
other123othe 2015-07-24
  • 打赏
  • 举报
回复
引用 5 楼 Sandrer 的回复:
OpenProcess 判断返回要快些
这个OpenProcess是和我们手动从任务管理器里面点击一个进程一样吗?会不会把这个后台进程掉到前台啊
阿源是少年 2015-07-23
  • 打赏
  • 举报
回复
PROCESSENTRY32 pe;
 DWORD id=0;
 HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 pe.dwSize=sizeof(PROCESSENTRY32);
 if(!Process32First(hSnapshot,&pe))
  return 0;
 while(1)
 {
  pe.dwSize=sizeof(PROCESSENTRY32);
  if(Process32Next(hSnapshot,&pe)==FALSE)
   break;
  if(strcmp(pe.szExeFile,name)==0)
  {
   id=pe.th32ProcessID;
   
   break;
  }
  }
 CloseHandle(hSnapshot);
枚举所有进程,一个一个匹配ID,没有匹配就说明不存在
sumos 2015-07-23
  • 打赏
  • 举报
回复
遍历进程列表,判断是否有此id
Sandrer 2015-07-23
  • 打赏
  • 举报
回复
OpenProcess 判断返回要快些
linjiagao052 2015-07-23
  • 打赏
  • 举报
回复
另外,遍历的时候,还可以使用这个 函数 EnumProcesses,介绍查看 msdn
linjiagao052 2015-07-23
  • 打赏
  • 举报
回复
1、楼上方法遍历 2、可以OpenProcess一下,看看返回值 3、维护一个表,监控进程的启动和退出

15,473

社区成员

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

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