问题是这样的 最近做了个鼠标钩子的程序,原来使用的是SetWindowsHookEx(WH_MOUSE,MouseProc,g_hInstance,0)但由于有些鼠标事件侦听不到,所以现在改成了SetWindowsHookEx(WH_MOUSE_LL,LowLevelMouseProc,g_hInstance,0)的更低层次的鼠标钩子。要求是达到了,但发现一个问题。当hook一启动,在操作其他窗口上,如点击其最大最小化或关闭按钮时,会发现鼠标略有迟钝。而在系统的任务栏上切换窗口时,也会有迟钝的现象。一开始我以为是我在函数LowLevelMouseProc里写的代码的问题,最后只把函数置空(直接保持基本的传递)测试下来还是会出现这种现象。
    请问各位这个是什么原因,有什么办法可以解决。    代码基本就是这样的:
g_hHook=SetWindowsHookEx(WH_MOUSE_LL,LowLevelMouseProc,g_hInstance,0);extern _declspec(dllexport) LRESULT CALLBACK WINAPI  LowLevelMouseProc(int nCode,WPARAM wParam,LPARAM lParam)
{
    //为了测试是否是代码的问题,已经被清空,但还是有上面所说的问题 
    return CallNextHookEx(g_hHook,nCode,wParam,lParam);
}
    
    

解决方案 »

  1.   

    WH_MOUSE的钩子在效率上是没问题,但当使用WH_MOUSE_LL就明显开始顿了
      

  2.   

    偶做过一个鼠标系统级 HOOK 的程序,和DLL ,效率很好啊我过会把它放到我的网站上去,你到免费软件里下载看看
      

  3.   

    re: Saimen 
    谢谢你,我已经运行过你的程序了,还是有这个问题啊,当程序运行后,你再随便开个窗口(IE,我的电脑)在窗口标题栏上点最小化按钮,点完的同时马上移动你的鼠标,有没有发现鼠标移动的时候卡了一下。我今天在单位的机器上也测试过了,但没有我家里机器表现的这么严重,单位里的还是老的1.6赛扬处理器,我现在在怀疑是不是我的双核AMD处理器的问题。
      

  4.   

    被我找到毛病了,应该是xp的视觉效果引起的,在关闭了 “在最大化和最小化时动画窗口”再测试就基本没有鼠标迟钝的现象了,大家以后在xp下写WH_MOUSE_LL的hook可以注意一下。
      

  5.   

    我的是 win2000 server 系统
    开发是在 xp 最高性能选项(无视觉效果) 下开发的,都还好,没有你说的问题呵呵
      

  6.   

    To mateen(JumpMan):想问下你有发现解决方法了吗?我查也好久,也是没查到其它有说此问题及解决方法的。如果要使用WH_MOUSE_LL,但又要兼顾XP系统,确实是个挺大的问题。
      

  7.   

    我这里有个代码,我感觉效率还可以,我是在2000下测试的:
    http://waxb.blog.com.cn/archives/2007/MsgHook.shtml