请问在程序中近程本身如何得知自己被其他进程关闭,比如说被任务管理起关闭?希望能给出详细地解释,谢谢

解决方案 »

  1.   

    同意: NowCan(能量、激情、雨水、彩虹——雷雨云) 
    自己无法得知。
    简单的说,死人不能说话。
      

  2.   

    可以的
    得用WM_CLOSE消息在关闭窗口前进行处理,
    原理是
    在收到WM_CLOSE的时候取得当前Active的Window Handle,如果这个Handle和你的应用程序的窗口过程中的不相等则说明其它进程试图关闭你的程序,现在你就可以做相应的处理了,例子代码如下:
    case WM_CLOSE:
      if (hWnd == GetActiveWindow())
      {
        MessageBox (hWnd, "可以关闭", "结果", MB_OK) ;
      }
      else
      {
        MessageBox (hWnd, "不能关闭", "结果", MB_OK) ;
      }
      break ;
      结分吧,呵呵
      

  3.   

    怕你还是看不明白,再补充一下WM_CLOSE发生在WM_DESTROY之前
      

  4.   

    xikug,我试了一下,不行啊!你试过吗?(win2000下用任务管理器结束他,那进程反应也没有,呵呵
      

  5.   

    to xikug(西方不敢很帅)你以为所的的程序都是窗口程序吗?并控制台程序就没有窗口消息循环.
    而且,TerminateProcess 是不发送消息的。我记得msdn里有这么一句 a thread can not protect itself against TerminateThread , TherminateProcess 我没查过,应该也有类似的话。想要获知关闭的话,我想,用其它进程监视比较好。