如何用delphi写一个dll 实现功能   一个A程序动态加载该dll    当在任务管理器强制关闭A.exe时同时结束B.exe   B.exe不是我写的 望高手赐教  

解决方案 »

  1.   

    任務管理器應該是 TerminateProcess 方式結束進程的。
    若是這樣 dll是不會收到通知消息DLL_PROCESS_DETACH, 所以你的需求無法通過dll來實現。
      

  2.   

    用钩子更好一点,或者把你的动态库植入到B.exe中去。
      

  3.   

    Windows 核心编程中有例子,或者上盒子上搜索一下。
      

  4.   

    钩住terminateprocess,获得被结束的进程名,如果是A,则terminateprocess B进程
      

  5.   

    这个问题解决方法N多,不需要HOOk也可以做到。
    比如可以:在DLL被A加载的时候查找B 进程,然后CreateRemotThread把自己的DLL强行加载到B进程中,然后在B进程中的DLL定时判断A是否关闭,如果关闭则直接Exitprocess(0);
      

  6.   

    你这样是钩不住的,任务管理中结束一个进程的确是用terminateprocess 但它调用的这个API的地址是内核映射到用户空间的你在别的进程HOOK这个API是影响不到任务管理器中的这个API的,你可以做实验A进程HOOK一个系统API然后在另一个进程中看这个API还是没有什么变化。要HOOK一个系统API函数必须得在执行这个API的进程空间进行HOOK才有效果。