# MouseClick

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

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

## 参数

WhichButton

  类型: 字符串

  如果未设置或省略, 默认为 Left(鼠标左键). 否则, 指定要单击的按钮或鼠标滚轮的旋转/推入方向.

  鼠标按钮: Left, Right, Middle(或这些单词的首字母); X1(第四个按钮) 或 X2(第五个按钮). 例如: `MouseClick "X1"`.

  Left 和 Right 分别对应主按钮和次按钮. 如果用户通过系统设置交换按钮, 则按钮的物理位置被交换, 但效果保持不变.

  鼠标滚轮: 指定 WheelUp 或 WU 使滚轮向上转动(远离你); 指定 WheelDown(或 WD) 使滚轮向下转动(朝向你). 指定 WheelLeft(或 WL) 或 WheelRight(或 WR) 分别向左或向右滚动滚轮. ClickCount 是转动滚轮的格数.

X, Y

  类型: 整数

  如果未设置或省略, 则使用光标的当前坐标. 否则, 请指定在点击前, 鼠标光标要移动到的 X 和 Y 坐标. 坐标相对于活动窗口的客户端区域, 除非曾使用 CoordMode 改变了这个设置.

ClickCount

  类型: 整数

  如果未设置或省略, 默认为 1. 否则, 请指定单击鼠标按钮或转动鼠标滚轮的次数.

Speed

  类型: 整数

  如果未设置或省略, 则使用默认速度(由 SetDefaultMouseSpeed 设置, 否则为 2). 否则, 请指定移动鼠标的速度, 介于 0(最快) 和 100(最慢) 之间. 速度为 0 表示鼠标瞬时移动.

  对于 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 函数, 因为它一般更容易使用. 但是, MouseClick 支持 Speed 参数, 而通过 Click 调整移动速度需要使用 SetDefaultMouseSpeed.

要进行 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 模式生成的鼠标事件可以比其他模式适应更大范围的游戏. 此外, 某些应用程序和游戏在鼠标移动过快时可能会跟踪困难. 可以使用 speed 参数或 SetDefaultMouseSpeed 来降低鼠标的速度(仅对默认的 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