# InstallMouseHook

安装或卸载鼠标钩子.

    InstallMouseHook Install, Force

## 参数

Install

  类型: 布尔值

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

Force

  类型: 布尔值

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

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

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

## 备注

鼠标钩子监视鼠标的点击, 以便激活鼠标热键和辅助热字串.

AutoHotkey 不会无条件安装键盘和鼠标钩子, 因为它们合起来至少占用 500 KB 的内存(但如果安装了键盘钩子, 安装鼠标钩只需要大约 50 KB 的额外内存; 反之亦然). 因此, 通常只有当脚本包含一个或多个鼠标热键时才会安装鼠标钩子. 它也会为热字串安装, 但这可以通过 #Hotstring NoMouse 禁用.

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

- KeyHistory 可以用来监控鼠标的点击.
- GetKeyState 可以检索到一个按钮的物理状态.
- A_TimeIdleMouse 和 A_TimeIdlePhysical 可以正确工作(分别忽略键盘输入和人工输入).

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

## 相关

InstallKeybdHook, #UseHook, Hotkey, KeyHistory, GetKeyState, KeyWait

## 示例

无条件安装鼠标钩子.

    InstallMouseHook

dftg