# MouseMove

移动鼠标光标.

    MouseMove, X, Y , Speed, Relative

## 参数

X, Y

  鼠标移动的目标位置的 x/y 坐标, 可以为表达式. 坐标相对于活动窗口, 除非曾使用 CoordMode 改变了这个设置.

Speed

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

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

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

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

Relative

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

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

## 备注

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

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

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

在每次鼠标移动后会有一个自动的延时(不包括 SendInput 模式). 使用 SetMouseDelay 可以改变延时的长度.

下面是另一种移动鼠标的方法, 它在某些多显示器环境中可能工作得更好:

    DllCall("SetCursorPos", "int", 100, "int", 400)  ; 第一个数字是 X 坐标而第二个是 Y (相对于屏幕).

相关提示, 鼠标光标可以通过隐藏光标示例临时隐藏起来.

## 相关

CoordMode, SendMode, SetDefaultMouseSpeed, SetMouseDelay, Click, MouseClick, MouseClickDrag, MouseGetPos, BlockInput

## 示例

移动鼠标到新位置.

    MouseMove, 200, 100

缓慢移动鼠标光标(速度 50 vs. 2) 到距离当前位置右边 20 个像素且在下面 30 个像素的位置.

    MouseMove, 20, 30, 50, R

dftg