首页
社区
课程
招聘
[求助]如何根据进程ID判断进程存在
发表于: 2013-5-3 02:41 5639

[求助]如何根据进程ID判断进程存在

2013-5-3 02:41
5639

话说某个软件我开了很多个,都取得了打开过的进程ID和进程句柄,但问题这些打开的软件偶尔会自动关闭一两个

现已知这些打开过的进程ID,如果判断哪个进程ID的窗口是不是还存在?应该用哪个API?

我想重新打开关闭过的软件

请各位大大指点一二,先谢谢了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 76
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
2013-5-3 03:53
0
雪    币: 14
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
你已经有id了,可以用个时钟打开进程,当openprocess调用失败的时候,就说明这个进程不在了。你也可以使用更常规的方法:遍厉所有进程id。驱动可以用:pssetcreateprocessnotify....方法有很多的
2013-5-3 04:07
0
雪    币: 14
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
遍厉窗口也可以,或者事先取得窗口句柄,然后用iswindow检测
2013-5-3 04:09
0
雪    币: 13
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
软件关闭了,用这openprocess照常是可以得到句柄的,也就是说PID可以复用,所说openprocess这个解决不了问题
2013-5-3 05:24
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
取进程的窗口句柄 然后用时钟遍历下 这些窗口句柄是否存在
2013-5-3 06:38
0
雪    币: 13
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
if (IsWindow(句柄)) 说明这个句柄是一个存在的窗口的名柄,这种方法在窗口消失的情况下是可以的,但是有时侯出现一些应用程序错误,系统弹出来一个错误提示框,这时窗口并没有消失,而是要点一下这个系统弹出来的提示框才能关闭这个窗口
2013-5-3 07:47
0
雪    币: 14
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
如果要考虑这些极端的情况  真的不容易找到一个完美的方法

若真的出现xxx内存不能为writen这种崩溃提示    那还真的不好办
2013-5-3 14:36
0
雪    币: 261
活跃值: (547)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
晕死啦,直接创建线程,调用信号函数Waitforxxxxxx,参数第一个是目标进程句柄。。又省cpu又效率
2013-5-24 00:41
0
游客
登录 | 注册 方可回帖
返回
//