如题

解决方案 »

  1.   

    "结束任务"按钮sendmessage wm_close消息,我想如果几秒后它没有返回,那么可以认为没有响应了吧?
      

  2.   

    如何判断一个应用程序没有响应了呢?下面这是来自MSDN的方法,原理是发一个消息到窗口,如果在指定时间(本例是1000ms)内这个消息得不到处理就认为没有响应。Const SMTO_BLOCK = &H1
    Const SMTO_ABORTIFHUNG = &H2
    Const WM_NULL = &H0
    Const WM_CLOSE = &H10
    Dim lngResult As Long
    Dim lngReturnValue As Long
    lngReturnValue = SendMessageTimeout(hWnd, WM_NULL, 0&, 0&, SMTO_ABORTIFHUNG And SMTO_BLOCK, 1000, lngResult)
    If lngReturnValue Then
    MsgBox "Responding"
    Else
    MsgBox "Not Responding","Block tester"
    End If
    需要说明的是,这实际上是判断一个窗口是否停止响应,如果应用程序有多个窗口,就可能出现某些窗口停止响应而另一些窗口正常的情况。这是正常现象。另外,在USER32.DLL里有个未见文档的函数IsHungAppWindow,也是用来判断窗口是否没有响应的。它的原型是
    BOOL IsHungAppWindow(HWND hWnd)http://nowcan.yeah.net