SetWindowsHookEx WH_MOUSE_LL Hook只需1个鼠标移动

Mar*_*rin 2 c++ windows mouse hook

我正在使用以下代码设置全局钩子:

SetWindowsHookEx(WH_MOUSE_LL, MouseProc, NULL, 0)
Run Code Online (Sandbox Code Playgroud)

我有一个断点设置,以便当我第一次运行应用程序时,我可以看到调用MouseProc方法.这有效但在第一次不再被调用之后.是否自动删除了Hook,如何获取此钩子以便钩子自动保留?我正在为windows编写这个应用程序,这是一个C++ win32项目.

Han*_*ant 7

我有断点设置

这足以解释这个问题.调试器当然会中断.这样可以防止将更多鼠标消息传递到具有焦点的窗口.Windows提示5秒,然后毫不客气地禁用你的钩子,因为它认为你的代码被破坏了.

超时是可配置的,您可以使用Regedit.exe来设置HKEY_CURRENT_USER\Control Panel\Desktop\LowLevelHooksTimeout值.默认情况下不存在,首先添加DWORD值.单位是毫秒.