怎么知道程序是被用户在win2000中的任务管理器强行关闭的?是不是有什么消息返回到程序?程序可以接收此消息并有机会作处理吗?  

解决方案 »

  1.   

    to risingsoft(一苇渡江) :这种方法我想过,问题是在程序退出前,某些文件就必须删除!
      

  2.   

    为什么不换个思路,比如说让任务管理器无法强行关闭?写成 system Services 撒。
      

  3.   

    另外,楼主的问题其实要解决也很简单,简单的列几个方法1.查找是否有任务管理器存在,如果存在,你关掉任务管理器
    2.双进程,如果其中一个进程被关闭,无论是不是任务管理器关的,另外那个进程负责善后
    3.采用hook api ,把关闭进程的api加个钩子,具体的例子有很多,你可以去这里http://www.madshi.net/olddlp0.htm 下载叫做 madCollection 的开发包,里面就有这样的例子,自己好好找找。
      

  4.   

    1. 写个监护进程,好像是服务程序, S.F.(CSDN:896410000)能不能说下具体步骤啊,以前从来没有作个 :(2. madCollection 已经下载,测试中!3. 感觉这些办法是最后的选择,我想在任务管理器中关闭程序时,肯定会有消息发到程序,如果能截获,就相当简单了!不知道有没有大下知道?
      

  5.   

    3. 感觉这些办法是最后的选择,我想在任务管理器中关闭程序时,肯定会有消息   发到程序,如果能截获,就相当简单了!不知道有没有大下知道?----------来不及收到任何消息,如果只是期望别人无法关闭你的进程,可以使用注入dll到系统进程的方式(服务也是可以使用服务管理器停止的),如果希望是可关闭的,最好使用双进程,然后彼此等待对方的进程句柄(WaitForSingleObject(hProcess),一旦成功则目标进程就已被关闭了,这时候马上启动(做一些善后处理也成,呵呵),HOOK API麻烦,不建议使用,不过使用ms的detours库的话也是比较安全的(相关函数:OpenProcess,CreateProcess,WaitForSingleObject),楼主可以自行尝试一下,:)