不幸的是,MSDN 对它不够清楚。我正在编写一个使用全局钩子的程序,我担心如果程序异常终止(崩溃、被用户杀死等)会发生什么。
当进程终止时,Windows 是否会自动解除进程安装的全局挂钩?
如果没有,是否可以在另一个进程中调用 UnhookWindowsHookEx() 来释放钩子?(如果它检测到安装程序进程已死,我正在考虑在挂钩线程中执行此操作。)
如果答案是“否”和“否”,那么当安装程序终止时让全局钩子处于活动状态不是很危险吗?处理这种情况的标准方法是什么?
我在 MSDN 中读到 UnhookWindowsHookEx() 不会释放在其他进程中加载的 dll,但它没有说明何时释放 dll。CodeProject 中的这篇文章似乎表明当第一条消息到达挂钩线程时,dll 未映射(在相应的进程中),因此它大约在 UnhookWindowsHookEx() 调用之后。这是真的吗?
谢谢你。