SetWindowsHookEx with WH_MOUSE not capturing mouse moves over HTCAPTION area
我尝试将SetWindowsHookEx与WH_MOUSE一起使用以捕获鼠标移动事件。 它可以在HTCAPTION区域之外的任何地方使用(至少在我的代码示例中)。 我找不到对此行为的任何参考,因此我尝试进入另一个执行相同操作以监视鼠标移动的应用程序。 所使用的方法也是WH_MOUSE,即使鼠标位于字幕区域上方,也会生成事件。 因此,它应该起作用,除非它不能起作用。
有任何想法吗 ?
编辑:
我正在使用它来挂钩所有进程。 我建立了一个单独的dll,将消息转发到应用程序中的某些内部窗口。
我使用dwThreadId = 0。
我也没有在标题区域中单击鼠标。
我想到了 :
MouseHookProc提供给SetWindowsHookEx的mouseproc接收鼠标的所有事件,这意味着我必须测试wParam等于WM_MOUSE或WM_NCMOUSEMOVE。 当光标在客户区上方时,会收到WM_MOUSE;当光标在非客户区上方时,会触发WM_NCMOUSEMOVE(类似于普通消息proc)。
1 2 3 4 5 6 7 8 9 10 11 12 | LRESULT CALLBACK MouseHookProc(int nCode, WORD wParam, DWORD lParam) { if(nCode>=0 && (wParam==WM_MOUSEMOVE || wParam==WM_NCMOUSEMOVE)) { if(!hwnd) hwnd=FindWindow(0,"MyWindow"); MSLLHOOKSTRUCT *mhs=(MSLLHOOKSTRUCT*)lParam; PostMessage(hwnd, WM_MOUSEHOOK, wParam, 0); } return CallNextHookEx(hHook,nCode,wParam,lParam); } |
我以为WM_MOUSE是某种相应的值,但不是真正的鼠标消息,而是。