问题提出:
    Socket 服务程序运行中可能会出错退出,但是一直没有找到出错的原因,应该是多线程的错误,提示内存不能为Write。
    为了尽量不影响客户端的使用采有以下权宜之计。权宜之计:
    通过一个监控程序,循环枚举系统当前进程,如果找不到socket server 进程就启动一个问题:
   socket server 程序有时会弹出错误对话框,等待用户响应;出现这种情况后,虽然程序没有退出,但是
也无法正常工作了。程序没有退出,监控进程就不起作用了。
   那么,能不能判断socket server 程序的状态处于出错提示状态??如果可以,就可以kill,restart one. 

解决方案 »

  1.   

    用SendMessageTimeout试试.如果目标程序在一定时间内不能对这个函数做出答复就认为是死了.
      

  2.   

    调用User32.dll中一个未公开的函数来实现的。这个函数存在于Windows 9x和Windows NT/2000系统中,但在两个系统中的名字是不同的。Windows 9x系统中的名字为:IsHungThread,在Windows NT/2000系统中的名字为IsHungAppWindow。下面是它们的原型:
    BOOL IsHungAppWindow (
    HWND hWnd, // 主应用窗口句柄
    );

    BOOL IsHungThread (
    DWORD dwThreadId, // 主应用窗口的线程ID
    );