InstallKeybdHook

安装或卸载键盘钩子.

InstallKeybdHook Install, Force

参数

Install

类型: 布尔值

省略此参数或传递 true(任何非零, 非空白值) 来要求钩子被安装. 传递 false 删除此函数之前设置的任何要求, 并可能卸载钩子.

Force

类型: 布尔值

如果 Force 为 true, 并且 Install 省略或为 true, 钩子会被卸载和重新安装. 这具有使其优先于其他进程先前安装的钩子的效果. 如果系统由于一个无响应的程序而停止调用该钩子, 重新安装该钩子可能会使其再次工作.

如果 Force 为 true, 并且 Install 为 false, 那么钩子就会被卸载, 即使是其他目的需要. 如果热键, 热字串InputHook 需要钩子, 它将停止工作, 直到该钩子被重新安装. 钩子可以通过调用这个函数显式地被重新安装, 也可以作为启用或禁用热键或调用其他需要钩子的函数的副作用而自动安装.

如果 Force 为 false, 内部变量会被更新, 以表明脚本是否需要钩子, 但是如果钩子是其他目的而需要的, 可能不会有直接的变化.

备注

键盘钩子监视击键, 以便激活热字串和任何 RegisterHotkey(操作系统内置的函数) 不支持的键盘热键. 它还支持其他一些特性, 如 InputHook 函数.

AutoHotkey 不会无条件安装键盘和鼠标钩子, 因为它们合起来至少占用 500 KB 的内存. 因此, 通常仅在脚本包含以下内容之一时才会安装键盘钩子: 1) 热字串; 2) 一个或多个需要键盘钩子(大多数不需要) 的热键; 3) SetCaps/Scroll/NumLock AlwaysOn/AlwaysOff; 4) 激活 Input 钩子.

与之相比, InstallKeybdHook 函数可以用来无条件安装键盘钩子, 它的好处包括:

不需要钩子的键盘热键将使用 reg 方法, 即使使用 InstallKeybdHook 函数. 相比之下, 将 #UseHook 指令或 $ 前缀应用于键盘热键, 强制需要钩子, 如果热键被启用, 就会导致钩子被安装.

你可以通过 KeyHistory 函数或菜单项来确定脚本是否在使用钩子. 你可以通过 ListHotkeys 函数或菜单项来确定哪些热键正在使用钩子.

InstallMouseHook, #UseHook, Hotkey, InputHook, KeyHistory, Hotstrings, GetKeyState, KeyWait

示例

无条件安装键盘钩子.

InstallKeybdHook
unixetc