一个有窗口的进程,是可以估计它是否响应。就像Vista下的DWM(Desktop Windows Management)的做法 - 它给窗口线程发消息,如果发现5秒钟内没有回音,它就认为该窗口线程未响应。你可模仿该做法。
先得到该进程的主窗口(假定该进程只有一个窗口线程);
用SendMessageTimeout API给他发空消息(WM_NULL);
如果超时,则认为该进程未响应

解决方案 »

  1.   

    可以用win32API GetMessage或者是PeekMessage   去查进程的阻塞状态
      

  2.   

    Process..::.Responding Property 
    Gets a value indicating whether the user interface of the process is responding.
    Namespace:  System.Diagnostics
    Assembly:  System (in System.dll)C# 
    public bool Responding { get; } 
      

  3.   

    这个更简单 - Process类已经提供这个功能了:)
    要注意如果该Process没有窗口,Responding将一直返回true。
      

  4.   

    无窗体的进程没有正常的人机交互界面,没有交互,又何所谓响应呢?Windows服务则用另外一种状态检查,它们要响应SERVICE_CONTROL_INTERROGATE调查。