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