【问题标题】:What is keyboard hook?什么是键盘挂钩?
【发布时间】:2019-06-07 19:48:05
【问题描述】:

我正在阅读 Autohotkey 的文档,然后我无法理解短语“键盘挂钩”或“鼠标挂钩”的含义。

这是正文:

"$ 前缀对鼠标热键没有影响,因为它们总是使用鼠标钩子。它对已经需要键盘钩子的热键也没有影响"

网址:https://www.autohotkey.com/docs/Hotkeys.htm

【问题讨论】:

    标签: keyboard window keyboard-shortcuts touchpad


    【解决方案1】:

    1 - Keyboard HookMouse Hook 表示:您可以监控/接收所有键盘按键值或监控所有鼠标按键按下值

    注意:您需要使用命令代码#InstallKeybdHook 来启用监视器

    对于鼠标钩,您需要使用命令代码#InstallMouseHook

    试试这个 AHK 代码:

    例子.ahk

    #SingleInstance force
    #InstallKeybdHook
    
    $^c::
    send ^c
    send {f5}
    return
    
    esc::exitapp
    

    2 - 并且 $ 前缀意味着您可以使用热键 ($^c::) 插入相同的热键代码(发送 ^c)。

    如何监控所有键盘按键值:

    1 - 转到系统托盘。(自动热键图标)

    2 - 然后单击鼠标右键。

    3 - 然后打开。

    4 - 然后单击鼠标左键。

    5 - 然后点击 Ctrl+c

    6 - 现在您将看到 键盘挂钩 你点击了。

    注意:要监控所有键盘按键值,您需要手动按 (F5) 键(刷新)

    【讨论】:

      【解决方案2】:

      热键类型(在自动热键中)

      一个。注册

      • reg:热键通过操作系统的RegisterHotkey()函数实现。
      • reg(no):与上述相同,只是此热键处于非活动状态(由于不受支持、禁用或暂停)。

      RegisterHotKey 函数 (winuser.h)
      from microsoft

      BOOL RegisterHotKey(
        [in, optional] HWND hWnd,
        [in]           int  id,
        [in]           UINT fsModifiers,
        [in]           UINT vk
      );
      

      b.钩子

      • k-hook:热键通过keyboard hook实现。
      • m-hook:热键通过鼠标钩子实现
      • 2-hooks:热键需要上面提到的两个钩子

      keyboard hook

      监控击键,用于激活:

      1. 热字串
      2. RegisterHotkey 不支持键盘热键
      3. 它还支持一些其他功能,例如输入命令

      当使用键盘挂钩时

      here says:
      最近注册的钩子首先被调用。
      最近最近启动的脚本不一定优先,因为挂钩热键总是优先于注册的热键
      AutoHotkey 在以下情况下使用钩子:

      1. 指示使用它(#UseHook 或 $),
      2. 如果脚本使用 #IfWin 则自动
      3. 如果热键无法注册

      进一步参考:

      SetWindowsHookEx

      https://docs.microsoft.com/en-us/windows/win32/winmsg/about-hooks

      为了利用特定类型的钩子,开发人员提供了一个钩子过程并使用 SetWindowsHookEx 函数将其安装到与钩子关联的链中

      SetWindowsHookExA 函数 (winuser.h)

      https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowshookexa?redirectedfrom=MSDN

      关于C#的类似问题:

      RegisterHotKeys and global keyboard hooks?

      一个

      https://www.autohotkey.com/boards/viewtopic.php?t=68550

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-18
        • 1970-01-01
        • 2023-03-13
        • 2015-09-22
        • 2010-09-27
        相关资源
        最近更新 更多