代码之家  ›  专栏  ›  技术社区  ›  We Are All Monica

微软是否改变了WindowsVista或7的键盘挂钩?

  •  1
  • We Are All Monica  · 技术社区  · 15 年前

    SetWindowsHookEx WH_KEYBOARD_LL


    how to restart a mouse hook?
    Detecting Keyboard Hooks

    2 回复  |  直到 15 年前
        1
  •  3
  •   Hans Passant    15 年前

    嗯,当UAC在VISTA中实现时,它已经修补了很多东西。然而,这不是一个常见的投诉。是的,Windows很可能停止回调钩子。当有一个钩子不能及时处理回调时,防止操作系统失去响应的内置功能。它会自动从回调列表中删除,而不进行任何诊断。

    这是基于超时的,并且确实可以在操作系统资源开始不足时跳闸。比如没有足够的内存和运行大量的进程,得到大量的分页。由于磁盘碎片问题(尤其是分页文件),较新版本的Windows更可能需要更多的RAM,因此在安装之前升级计算机而不是擦除计算机时,它们往往会受到影响。

    可以通过添加hkcu\control panel\desktop\lowlevelhookstimeout值(dword,即10000)来调整超时设置。在superuser.com上问更多关于它的问题

        2
  •  1
  •   Nick Spreitzer    15 年前

    前几天我写自己的键盘挂钩时遇到了和你描述的一样的超时问题。为了解决这个问题,我编写了HookCallback过程,它异步调用一个按键事件并立即返回。

    Here's a link to my code ,如果你感兴趣的话。