什么是键盘钩子?
What is keyboard hook?
我正在阅读 Autohotkey 的文档,然后我无法理解短语 'keyboard hook' 或 'mouse hook' 的含义。
这是正文:
"$ 前缀对鼠标热键没有影响,因为它们总是使用鼠标钩子。它对已经需要键盘钩子的热键也没有影响"
1 - 一个 Keyboard Hook 或 Mouse Hook 这意味着:你可以 monitor/receive 所有键盘按键值或您监控所有鼠标按钮按下值
注意:您需要使用命令代码#InstallKeybdHook
来启用监视器
对于鼠标挂钩,您需要使用命令代码#InstallMouseHook
试试这个 AHK 代码:
Example.ahk
#SingleInstance force
#InstallKeybdHook
$^c::
send ^c
send {f5}
return
esc::exitapp
2 - $ 前缀意味着您可以使用热键 ($^c::) 进入相同的热键代码 (发送 ^c)。
如何监控所有键盘按键值:
1 - 转到系统托盘。(Autohotkey 图标)
2 - 然后单击鼠标右键。
3-然后去打开。
4 - 然后单击鼠标左键。
5 - 然后点击 Ctrl+c
6 - 现在您将看到
键盘挂钩
你点击了。
注意:要监视所有键盘按键值,您需要手动按下 (F5) 键(刷新)
热键类型(在自动热键中)
一个。注册
- 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:热键需要上面提到的两个 hooks
keyboard hook
它监控击键,目的是激活:
- hotstrings
- RegisterHotkey 不支持键盘热键
- 它还支持一些其他功能,例如输入命令
使用键盘钩子时
here says:
最近注册的钩子 首先被调用。
最近启动的脚本不一定优先,因为挂钩热键总是优先于已注册的热键。
AutoHotkey 在以下情况下使用钩子:
- 指示使用它(#UseHook 或 $),
- 如果脚本使用 #IfWin
则自动
- 如果热键无法注册。
进一步参考:
SetWindowsHookEx
https://docs.microsoft.com/en-us/windows/win32/winmsg/about-hooks
为了利用特定类型的挂钩,开发人员提供了一个挂钩过程并使用 SetWindowsHookEx 函数将其安装到与挂钩关联的链中
SetWindowsHookExA函数(winuser.h)
关于 C#
的类似问题:
RegisterHotKeys and global keyboard hooks?
一个
我正在阅读 Autohotkey 的文档,然后我无法理解短语 'keyboard hook' 或 'mouse hook' 的含义。
这是正文:
"$ 前缀对鼠标热键没有影响,因为它们总是使用鼠标钩子。它对已经需要键盘钩子的热键也没有影响"
1 - 一个 Keyboard Hook 或 Mouse Hook 这意味着:你可以 monitor/receive 所有键盘按键值或您监控所有鼠标按钮按下值
注意:您需要使用命令代码#InstallKeybdHook
来启用监视器
对于鼠标挂钩,您需要使用命令代码#InstallMouseHook
试试这个 AHK 代码:
Example.ahk
#SingleInstance force
#InstallKeybdHook
$^c::
send ^c
send {f5}
return
esc::exitapp
2 - $ 前缀意味着您可以使用热键 ($^c::) 进入相同的热键代码 (发送 ^c)。
如何监控所有键盘按键值:
1 - 转到系统托盘。(Autohotkey 图标)
2 - 然后单击鼠标右键。
3-然后去打开。
4 - 然后单击鼠标左键。
5 - 然后点击 Ctrl+c
6 - 现在您将看到 键盘挂钩 你点击了。
注意:要监视所有键盘按键值,您需要手动按下 (F5) 键(刷新)
热键类型(在自动热键中)
一个。注册
- 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:热键需要上面提到的两个 hooks
keyboard hook
它监控击键,目的是激活:
- hotstrings
- RegisterHotkey 不支持键盘热键
- 它还支持一些其他功能,例如输入命令
使用键盘钩子时
here says:
最近注册的钩子 首先被调用。
最近启动的脚本不一定优先,因为挂钩热键总是优先于已注册的热键。
AutoHotkey 在以下情况下使用钩子:
- 指示使用它(#UseHook 或 $),
- 如果脚本使用 #IfWin 则自动
- 如果热键无法注册。
进一步参考:
SetWindowsHookEx
https://docs.microsoft.com/en-us/windows/win32/winmsg/about-hooks
为了利用特定类型的挂钩,开发人员提供了一个挂钩过程并使用 SetWindowsHookEx 函数将其安装到与挂钩关联的链中
SetWindowsHookExA函数(winuser.h)
关于 C#
的类似问题:
RegisterHotKeys and global keyboard hooks?