如何判断某窗口失去响应(VB6)
作者:admin 日期:2009-10-28
在VBGOOD的这个帖子里看到有人问这个问题:
怎么样判断一个进程出错或未响应
在没查之前,想了一下,应该是使用SendMessage发送一个必回的消息到目标进程的某窗体,如果有返回了证明是活的,如果没返回就应该是死了.
不过懒,没想先写代码.......干脆搜索一下,发现有个简单的API可以搞定:
[codes=vb]Private Declare Function IsHungAppWindow Lib "user32.dll" ( _
ByVal hWnd As Long) As Long
[/codes]
参数只有一个,目标窗口的句柄.
返回值测试了一下,当句柄无效或句柄所标识的窗体的消息循环是正常的,则返回0,否则返回1,代表挂了....
另外的办法,是使用SendMessageTimeout+WM_NULL来看是否返回,与我上面的思路差不多,看来没想错.
怎么样判断一个进程出错或未响应
在没查之前,想了一下,应该是使用SendMessage发送一个必回的消息到目标进程的某窗体,如果有返回了证明是活的,如果没返回就应该是死了.
不过懒,没想先写代码.......干脆搜索一下,发现有个简单的API可以搞定:
[codes=vb]Private Declare Function IsHungAppWindow Lib "user32.dll" ( _
ByVal hWnd As Long) As Long
[/codes]
参数只有一个,目标窗口的句柄.
返回值测试了一下,当句柄无效或句柄所标识的窗体的消息循环是正常的,则返回0,否则返回1,代表挂了....
另外的办法,是使用SendMessageTimeout+WM_NULL来看是否返回,与我上面的思路差不多,看来没想错.
评论: 2 | 引用: 0 | 查看次数: 1323


SendMessageTimeout+WM_NULL好象专门就是干这个的.....


顶啊,IsHungAppWindow看来很好用啊,
sendmessage应该不好,一定要等待执行失败才能返回结果,而且托死自己,等到执行失败也不能判断目标窗口是不是因为无响应
sendmessage应该不好,一定要等待执行失败才能返回结果,而且托死自己,等到执行失败也不能判断目标窗口是不是因为无响应