Windows下怎么通过代码判断一个进程真的彻底没响应了?

Tugangw2000 2017-01-12 01:52:42
问一个难倒所有编程高手的问题:Windows下怎么通过代码判断一个进程真的彻底没响应了?
...全文
1264 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tugangw2000 2017-02-20
  • 打赏
  • 举报
回复
是问题不够明确?
Tugangw2000 2017-02-16
  • 打赏
  • 举报
回复
真没想到就这么一个问题竟能难倒全天下的英雄好汉,各IT大侠
santiaodahan 2017-02-16
  • 打赏
  • 举报
回复
这恐怕已经不是一个实际程序问题了。最近看到一个技术论坛上有人提了一个问题:怎样创建一个能被所有语言调用的dll,结果被编辑关闭了。原因是它不是一个具体问题,它含糊不清、过于宽泛、不完整。 一个有辨别力的问题应该有边界和可证伪性,并且是可验证的和操作主义的。所以应该先理清概念,构造出需要解决的那个具体问题情景。
Tugangw2000 2017-02-14
  • 打赏
  • 举报
回复
确实有一定难度,但我相信是有办法的
santiaodahan 2017-02-08
  • 打赏
  • 举报
回复
引用 12 楼 Tugangw2000 的回复:
进程ID不存在了还好说,但要是进程ID存在实际进程已无响应,这个才是本帖所要解决的问题。
你构造出了上面两种方式都误判的情景了?你认为无响应的边界在哪里?比如超时时间,无反馈消息或返回结果。
Tugangw2000 2017-02-08
  • 打赏
  • 举报
回复
给线程做一个心跳。心跳停了,它也就死了 这个不知具体实现方法,是不是要给受控线程发心跳包?不是烦请细说一下
Tugangw2000 2017-02-08
  • 打赏
  • 举报
回复
进程ID不存在了还好说,但要是进程ID存在实际进程已无响应,这个才是本帖所要解决的问题。
不得闲 2017-02-07
  • 打赏
  • 举报
回复
枚举进程,获得进程ID,WaitForSingleObject不断的判定进程是否存在
lyhoo163 2017-02-06
  • 打赏
  • 举报
回复
给线程做一个心跳。心跳停了,它也就死了。
雄牛 2017-02-06
  • 打赏
  • 举报
回复
用这个IsHungAppWindow
santiaodahan 2017-01-20
  • 打赏
  • 举报
回复
这两种方式都是MSDN提到的,是比较简洁的。响应不响应的界限不是那么泾渭分明,如果有误判就得分多种情况,临界值需要自己调。软件都是不断更新发展的,没那么多一劳永逸的法。判断连接是不是响应,直接去连接判断返回值是最简便的方法。
Tugangw2000 2017-01-20
  • 打赏
  • 举报
回复
SendMessageTimeout 函数发送WM_NULL消息可能会误判
Tugangw2000 2017-01-20
  • 打赏
  • 举报
回复
还有别的方法吗?
Tugangw2000 2017-01-20
  • 打赏
  • 举报
回复
但不可能每个程序都配一个狗
wywry 2017-01-20
  • 打赏
  • 举报
回复
若都是自己写的程序,做个看门狗;狗不叫,就死掉!
Tugangw2000 2017-01-19
  • 打赏
  • 举报
回复
就是不响应连接了,或者无法切换到并正常显示软件界面
santiaodahan 2017-01-19
  • 打赏
  • 举报
回复
可以使用Windows API函数: IsHungAppWindow (user32.dll),判断应用程序是否响应。不过,MSDN提示此函数可能会在后续版本中更改或删除,最好做好判断。 SendMessageTimeout 函数发送WM_NULL消息也可以判断窗口是否响应。
  • 打赏
  • 举报
回复
先定义没响应的概念...

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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