# MouseClick

点击或按住鼠标按钮, 或滚动鼠标滚轮. 注意: Click 命令通常更灵活和易于使用.

    MouseClick , WhichButton, X, Y, ClickCount, Speed, DownOrUp, Relative

## 参数

WhichButton

  要点击的按钮: Left(默认), Right, Middle(或仅使用这些名称的首个字母), 或鼠标的第四或第五个按钮(X1 或 X2). 例如: `MouseClick, X1`. 此参数可以省略, 此时它默认为 Left.

  要转动的鼠标滚轮: 指定 WheelUp 或 WU 来向上转动滚轮(远离您的方向), 指定 WheelDown 或 WD 来向下转动滚轮(靠近您的方向). [v1.0.48+]: 使用 WheelLeft(或 WL) 或 WheelRight(或 WR) 分别向左或向右滚动滚轮(但是它们在比 Windows Vista 早的操作系统中没有效果). ClickCount 为需要转动的滚轮格数.

  要避免受用户通过系统控制面板对左右键功能交换的设置的影响, 请使用 Click 命令代替.

X, Y

  在点击前, 鼠标光标要移动到的 x/y 坐标, 可以为表达式. 坐标相对于活动窗口, 除非曾使用 CoordMode 改变了这个设置. 如果省略, 那么使用光标的当前位置.

ClickCount

  点击鼠标的次数, 可以为表达式. 如果省略, 那么点击鼠标一次.

Speed

  移动鼠标的速度, 介于 0(最快) 和 100(最慢) 之间, 可以为表达式.

  注意: 速度为 0 表示瞬时移动鼠标到目标位置.

  如果省略, 则使用默认速度(通过 SetDefaultMouseSpeed 设置, 若未设置则使用 2).

  在 SendInput/Play 模式中会忽略 Speed; 它们会瞬时移动鼠标到目标位置(不过 SetMouseDelay 有适用于 SendPlay 的模式). 要显示鼠标移动轨迹(例如使用脚本向观众进行演示时), 请使用 `SendEvent {Click 100 200}` 或 `SendMode Event`(可以和 BlockInput 联合使用).

DownOrUp

  如果省略, 则每次点击会由 "按下" 事件后接着 "弹起" 事件组成. 要更改此行为, 请指定以下字母之一:

  D: 按下鼠标按钮, 但不释放(即生成按下事件).

  U: 释放鼠标按钮(即生成弹起事件).

Relative

  如果省略, 则会把 X 和 Y 坐标视为绝对值. 要更改此行为, 请指定下面的字母:

  R: 将 X 和 Y 坐标视为距离当前鼠标位置的偏移. 换句话说, 会把光标从当前位置往右移动 X 像素(负值则往左) 且往下移动 Y 像素(负值则往上).

## 备注

此命令的发送模式由 SendMode 设置.

比起 MouseClick, 更推荐使用 Click 命令, 因为:

1. 它自动适应控制面板中左右键功能交换的设置.
2. 它一般更容易使用.

要进行 shift-click 或 control-click, 请在操作前后使用 Send 命令, 例如:

    ; 示例 #1:
    Send, {Control down}
    MouseClick, left, 55, 233
    Send, {Control up}

    ; 示例 #2:
    Send, {Shift down}
    MouseClick, left, 55, 233
    Send, {Shift up}

SendPlay 模式生成的鼠标事件可以比其他模式适应更大范围的游戏. 此外, 某些应用程序和游戏在鼠标移动过快时可能会跟踪困难. 可以使用 SetDefaultMouseSpeed 的 speed 参数来降低鼠标的速度(仅对默认的 SendEvent 模式有效).

有些程序不接受鼠标滚轮转动的格数 ClickCount 大于 1 的情况. 对于这些程序, 请参考下面的例子使用 Loop:

    Loop, 5
        MouseClick, WheelUp

可以使用 BlockInput 命令防止用户对鼠标的任何物理操作扰乱由鼠标命令生成的模拟鼠标事件. 不过, 在 SendInput/Play 模式中通常不需要这个命令, 因为它们会自动延迟用户对鼠标的物理操作到发送之后.

在每次鼠标按下事件和鼠标弹起事件后都会有一个自动的延时(不包括在 SendInput 模式中转动鼠标滚轮的情况). 使用 SetMouseDelay 可以改变延时的长度.

## 相关

CoordMode, SendMode, SetDefaultMouseSpeed, SetMouseDelay, Click, MouseClickDrag, MouseGetPos, MouseMove, ControlClick, BlockInput

## 示例

在当前鼠标位置双击.

    MouseClick, left
    MouseClick, left

和上面相同.

    MouseClick, left,,, 2

移动到指定的坐标然后点击一次右键.

    MouseClick, right, 200, 300

模拟转动鼠标滚轮.

    #up::MouseClick, WheelUp,,, 2  ; 把它转两个位置.
    #down::MouseClick, WheelDown,,, 2

dftg