全局系统鼠标钩子(Hook)可以拦截到本程序的鼠标消息但不能拦截到全局鼠标消息,鼠标单击事件等等
我最近使用Hook技术监听鼠标消息,因为要用到系统钩子,使用自己实现了一个DLL,DLL中安装钩子代码如下:
g_hMouse = SetWindowsHookEx(WH_MOUSE, MouseProc, g_hModule, 0);自己实现的钩子回调函数代码如下:
//鼠标钩子处理函数
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
ProcessMouse(nCode, wParam, lParam);
return CallNextHookEx(g_hMouse, nCode, wParam, lParam);;
}
其中ProcessMouse是主程序的一个回调函数,即返回主程序对鼠标消息进行相应的处理,安装钩子时将此回调函数的地址传给DLL,但是发现钩子可以拦截调用程序的各种鼠标消息,但是却不能拦截到系统全局的鼠标消息(例如单击左键,单击右键,滚动滑轮,点击滑轮等等)貌似只能拦截到系统全局的鼠标移动消息。另,经过测试若鼠标钩子处理函数返回1可以屏蔽鼠标消息,小弟实在是不解。
小弟已经被这个问题困扰一周了,求各位大神指导呀,感激不尽,高分悬赏!