坏境:windows XP
在使用SetWindowsHook截获鼠标事件时,如果使用WH_MOUSE参数,则只能监控钩子所在模块的鼠标事件。
如需要截获整个系统的鼠标事件,那么使用WH_MOUSE_LL参数。
- //install
- hmouse=SetWindowsHookEx(WH_MOUSE_LL,(HOOKPROC)mouseproc,GetModuleHandle("KeyMonitor.dll"),0);//挂上鼠标钩子
- //call back
- if(code<0)//若code〈0,则直接调用callnexthookex返回
- return CallNextHookEx(hhook, code, wParam, lParam);
- else if(code==HC_ACTION)
- {
- if(wParam==WM_MOUSEMOVE)
- {//离开主窗体 &&((PMOUSEHOOKSTRUCT)lParam)->hwnd!=main->Handle
- int x=((PMSLLHOOKSTRUCT)lParam)->pt.x;
- int y=((PMSLLHOOKSTRUCT)lParam)->pt.y;
- if(!(x>=main->Left&&x<=(main->Left+main->Width)&&y>=main->Top&&y<=(main->Top+main->Width)))
- SendMessage(main->Handle,WM_MOUSELEAVE,0,0);
- }
- }
- return CallNextHookEx(hhook, code, wParam,lParam);