刚才有朋友建议我:
两个进程A,B。A被用户启动后自动启动B,B监视A,一旦A被杀A干活的时候不时看看B是否存在,不在就
我目前也是这种做法,我想知道大家有什么其他的什么方法没?

解决方案 »

  1.   

    《MFC深入浅出》里面讲的有,你查一下 :)
      

  2.   

    to  I_Love_CPP(我爱C++) 
    谢谢提示,你手边有这书吗?我这里没有,哪位兄弟帮我瞧瞧
      

  3.   

    经常看到回答用HOOK来做,但实际怎么做没人讲。你的方法可行。
      

  4.   

    thank pepsi1980(这只老鼠不会游泳),继续up
      

  5.   

    可以Hook termilateprocess.
    可以写wdm.hook sver.
      

  6.   

    to 回复人: wwwllg(wwwllg) ,能说具体些吗?最好有个例子   :)
      

  7.   

    据我所知,应该是没有任何消息的,楼上说的hook terminateprocess方法我怀疑是否可用
    因为我记得有本书上说调用这个terminateprocess函数之后,被杀的那个进程是没机会做任何反应的
      

  8.   

    当一个窗口或应用程序要关闭时发送一个信号
    WM_QUERYENDSESSION = $0011;
      

  9.   

    to  I_Love_CPP(我爱C++) ,谢谢哈。恭候回音
      

  10.   

    laiyiling(【陌生人 V2.0】) Windows NT/2000以及后续版本: 当一个程序响应WM_QUERYENDSESSION并返回TRUE,那么它就会立刻接受到WM_ENDSESSION消息并马上结束,而不管其他的程序是怎么样回应WM_QUERYENDSESSION消息的。Windows 95/98/Me:只有当系统内所有的程序都对WM_QUERYENDSESSION消息回应TRUE之后,他们才会一起接受到WM_ENDSESSION 消息,然后结束。如果要强制关闭所有的程序,使用ExitWindowsEx函数,指定EXW_FORCE标志。如果这样做,系统不发送WM_QUERYENDSESSION 消息,而直接终止正在运行的程序。是不是任务管理器也这样?因为它是采用termilateprocess
      

  11.   

    //我没有遇到过这个问题啊。既然答应了帮忙,呵呵,我只有搬经典著作了 :)1.Jeffrey 说:
    若要终止进程的运行,可以使用下面四种方法:
    • 主线程的进入点函数返回
    • 进程中的一个线程调用E x i t P r o c e s s函数
    • 另一个进程中的线程调用Te r m i n a t e P r o c e s s函数
    • 进程中的所有线程自行终止运行(鄙人说:其中,只有第3种方法终止运行的进程“绝对得不到关于它将终止运行的任何通知,因为应用程序无法正确地清除,并且不能避免自己被撤消(除非通过正常的安全机制)”,那么你如果用其它方法杀死进程A,你都能监测的。下面是关于用TerminateProcess杀死进程:)2. 大师他老人家又说:
    注意Te r m i n a t e P r o c e s s函数是个异步运行的函数,也就是说,它会告诉系统,你想要进程终止运行,但是当函数返回时,你无法保证该进程已经终止运行。因此,如果想要确切地了解进程是否已经终止运行,必须调用Wa i t F o r S i n g l e O b j e c t函数。(鄙人:你去查查WaitForSingleObject(),那么你的问题也解决了。)3.后话:
    我有个小小的想法:你杀一个进程的时候可以发一个自定义消息也可以解决问题(缺点是万一杀不死呢)
      

  12.   

    Windows NT/2000以及后续版本: 当一个程序响应WM_QUERYENDSESSION并返回TRUE,那么它就会立刻接受到WM_ENDSESSION消息并马上结束,而不管其他的程序是怎么样回应WM_QUERYENDSESSION消息的。嗯,这样的话,你根本不能处理
      

  13.   

    to  I_Love_CPP(我爱C++) ,谢谢老兄。不过,可能老兄误解我的意图了,是我没有讲明白,
    我想实现的目的:
    我有拨号程序A,在A中它有一些功能块,譬如:拨号,挂断。我现在就是为了实现防杀功能。因为如果用户强制性杀掉程序,这时候,程序是无法正常调用挂断模块的。所以,即使没有了程序A,用户依旧能上网。我就想,当用户强制性杀掉A时,我就立即能得知这个消息,然后也立即挂断网络。
    所以说,不是我主动发起Te r m i n a t e P r o c e s s,是被动的被kill
    如果没有别的更好的办法,就采用土办法了。呵呵
      

  14.   

    hook terminateprocess当传来两个参数,对第一个进行分析,如果为自己则直接return不做反应
      

  15.   

    UP.
    #define SIGINT          2       /* interrupt */
    #define SIGILL          4       /* illegal instruction - invalid function image */
    #define SIGFPE          8       /* floating point exception */
    #define SIGSEGV         11      /* segment violation */
    #define SIGTERM         15      /* Software termination signal from kill */
    #define SIGBREAK        21      /* Ctrl-Break sequence */
    #define SIGABRT         22      /* abnormal termination triggered by abort call */signal()...
      

  16.   

    HOOK TerminateProcess,User Mod下只有这个办法
      

  17.   

    请问,如何hook 一个api函数?
      

  18.   

    hook 一个api 
    <<Windows 核心编程>> Dll 部分 有详细讲解