# 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 模式能够在更多的游戏中成功地生成鼠标事件. 此外, 如果鼠标移动速度过快, 一些应用程序和游戏可能会在跟踪鼠标时出现问题. 可以使用 speed 参数或 SetDefaultMouseSpeed 来降低速度(仅在默认的 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