c++ - 单击标题栏按钮时,全局低级鼠标钩子(Hook)会导致卡住

标签 c++ windows internet-explorer windows-7 hook

我正在为 IE 编写一个附加组件。我需要在外部点击时关闭模态对话框。

到目前为止,我已经使用 WM_NCACTIVATE 来接收这些通知,但似乎在 Windows 7 (IE8) 上我没有收到此消息(我在低完整性上运行并且我已经用 spy++ 验证了它;它似乎当我以高完整性运行时它确实有效 - 奇怪的东西)。

我已尝试为 DeskBand UI 线程使用常规鼠标 Hook 。除了对话框外的鼠标事件,我确实得到了所有鼠标事件。

所以我转而使用全局低级鼠标钩子(Hook) (WH_MOUSE_LL)。 一切正常,但由于一些非常奇怪的原因,当我单击任何一个标题栏按钮时,我会卡住 5-10 秒。

经过一些在线研究后,我意识到这是一个常见问题,但我没有找到解决方案。有些人说这是性能问题,但即使我的 Hook 函数只调用“CallNextHook”,它仍然会发生。

关于如何修复它的任何想法或在外部点击时关闭模式对话框的替代想法?

最佳答案

我通过移除 WH_MOUSE_LL 修复了这个问题。 这在 Windows XP 中运行良好,但会卡住整个计算机,有时直到我打开和关闭计算机。

我认为他们没有修复这个错误是荒谬的。 它浪费了我很多时间。

关于c++ - 单击标题栏按钮时,全局低级鼠标钩子(Hook)会导致卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4238571/

相关文章:

windows - RegSvr32.exe的/n和/i参数有什么区别?

java - ".bat"文件未将重音符号打印到 .txt 文件

css - 表格单元格的 100% 高度在 IE 中不起作用

c++ - 给定一个 lambda 捕获,什么规则决定了结果闭包成员的类型?

c# - 你能在 C# 中编写一段 C++ 代码吗?

c# - 如何终止特定用户帐户下运行的特定进程

javascript - 如何更改 HTML 元素样式,然后使用 JS 在 onLoad() 上恢复它?

html - 如何在 IE-11 中将 div 保持在页面的中心?

c++ - 字符串流问题

c++ - 在 MinGW/GCC 中编译 tvmet 库时出现 "::drem has not been declared"