如何判断某窗口失去响应(VB6)

在VBGOOD的这个帖子里看到有人问这个问题:

怎么样判断一个进程出错或未响应

在没查之前,想了一下,应该是使用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
admin
admin[2009-10-29 01:31 PM | ]
SendMessageTimeout+WM_NULL好象专门就是干这个的.....
三断笛
三断笛[2009-10-29 10:54 AM | ]
顶啊,IsHungAppWindow看来很好用啊,
sendmessage应该不好,一定要等待执行失败才能返回结果,而且托死自己,等到执行失败也不能判断目标窗口是不是因为无响应