Skip to content
qiannian edited this page Jul 4, 2026 · 8 revisions

mouse

操作鼠标

接口目录

鼠标轨迹说明

普通点击优先用 MoveToMoveToEx,它们会直接移动到目标位置,速度快,也兼容旧脚本。

需要连续移动时再用轨迹接口,比如拖动地图、拖动背包物品、滑块、长按拖拽这类操作。轨迹接口会把一次移动拆成多个点发送,duration 表示整段轨迹的耗时,单位为毫秒。duration 传 0 时不会额外等待,但仍会按轨迹拆点。

如果需要统一调整轨迹风格,可以先调用 SetMouseTrajectory。它只影响 MoveToSmoothMoveToExSmoothMovePathDragPath,不会改变 MoveToMoveToEx、点击和键盘输入。

路径格式统一为:

x1,y1|x2,y2|x3,y3

路径至少需要两个不同的点。坐标含义和当前鼠标绑定模式一致:绑定窗口后一般是窗口客户区坐标,未绑定时是屏幕坐标。

接口方法

GetCursorPos

获取鼠标位置

long GetCursorPos(x,y)
参数 类型 描述
x int* 变参指针: 返回 X 坐标
y int* 变参指针: 返回 Y 坐标

返回值

类型:int

  • 0:失败
  • 1:成功

示例

var x, y int
op.GetCursorPos(&x,&y)
printf("x:%d,y:%d",x,y)

MoveR

鼠标相对于上次的位置移动 rx,ry.

long MoveR(rx,ry)
参数 类型 描述
rx int 相对于上次的 X 偏移
ry int 相对于上次的 Y 偏移

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.MoveR(rx,ry)

MoveTo

把鼠标移动到目的点(x,y)

long MoveTo(x,y)
参数 类型 描述
x int X 坐标
y int Y 坐标

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.MoveTo(x,y)

MoveToEx

把鼠标移动到目的范围内的任意一点

string MoveToEx(x,y,w,h)
参数 类型 描述
x int X 坐标
y int Y 坐标
w int 宽度(从 x 计算起)
h int 高度(从 y 计算起)

返回值

类型:string

返回要移动到的目标点. 格式为 x,y. 比如 MoveToEx 100,100,10,10,返回值可能是 101,102

示例

// 移动鼠标到(100,100)到(110,110)这个矩形范围内的任意一点.
op.MoveToEx(100,100,10,10)

注:此函数会把鼠标移动到指定范围 (x,y,x+w,y+h) 内的随机一点。wh 可以为负数,此时随机范围会向 xy 的反方向展开。

MoveToSmooth

按轨迹把鼠标移动到指定坐标。

long MoveToSmooth(x,y,duration)
参数 类型 描述
x int 目标 X 坐标
y int 目标 Y 坐标
duration int 整段轨迹耗时,单位毫秒

返回值

类型:int

  • 0:失败
  • 1:成功

示例

// 用 200 毫秒移动到 300, 180
op.MoveToSmooth(300,180,200)

MoveToExSmooth

在指定范围内随机取一个目标点,然后按轨迹移动过去。

string MoveToExSmooth(x,y,w,h,duration)
参数 类型 描述
x int 起始 X 坐标
y int 起始 Y 坐标
w int 宽度,从 x 开始计算
h int 高度,从 y 开始计算
duration int 整段轨迹耗时,单位毫秒

返回值

类型:string

成功时返回最终移动到的点,格式为 x,y。失败时返回空字符串。

示例

// 在按钮区域内随机取点,再用轨迹移动过去
pos = op.MoveToExSmooth(500,300,80,30,180)

注:wh 可以为负数,随机范围会向反方向展开。

MovePath

按指定路径移动鼠标。适合使用录制出来的轨迹,或者脚本自己生成的轨迹点。

long MovePath(path,duration)
参数 类型 描述
path string 路径点,格式为 `x,y
duration int 整条路径耗时,单位毫秒

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.MovePath("100,120|140,132|190,160|240,210",300)

注:路径至少需要两个不同的点。点与点之间距离较远时,内部会补中间点,不会只在几个关键点之间硬跳。

DragPath

按指定路径拖拽鼠标。函数会先移动到路径第一个点,然后按下左键,沿路径移动到最后一个点,最后松开左键。

long DragPath(path,duration)
参数 类型 描述
path string 拖拽路径,格式为 `x,y
duration int 拖拽过程耗时,单位毫秒

返回值

类型:int

  • 0:失败
  • 1:成功

示例

// 从 300,400 拖到 520,420
op.DragPath("300,400|380,410|450,416|520,420",500)

注:DragPath 适合地图拖动、滑块、物品拖拽。只是移动鼠标时用 MovePath,需要按住左键拖动时用 DragPath

SetMouseTrajectory

设置鼠标轨迹参数。这个设置保存在当前对象里,后续的轨迹移动都会使用这组参数。

long SetMouseTrajectory(mode,min_duration,max_duration,jitter,start_delay,end_delay)
参数 类型 描述
mode int 轨迹类型:0 默认,1 直线,2 贝塞尔曲线
min_duration int 最小轨迹耗时,单位毫秒。duration 传 0 时会使用这个值
max_duration int 最大轨迹耗时,单位毫秒。传 0 表示不限制
jitter int 抖动幅度,范围 0-100。0 表示不做曲线偏移
start_delay int 起步停顿,单位毫秒。移动前等待
end_delay int 落点停顿,单位毫秒。DragPath 会在松开左键前等待

返回值

类型:int

  • 0:失败
  • 1:成功

示例

// 直线移动,至少 80 毫秒,最多 300 毫秒,到点后停 30 毫秒
op.SetMouseTrajectory(1,80,300,0,0,30)
op.MoveToSmooth(600,420,0)

// 使用曲线轨迹,保留轻微抖动,适合拖拽类操作
op.SetMouseTrajectory(2,120,600,18,40,80)
op.DragPath("300,400|380,410|460,418|520,420",0)

注:SetMouseTrajectory 只管轨迹移动。鼠标按下和弹起之间的间隔仍然用 SetMouseDelay 设置。

MovePathDragPath 的路径由脚本传入,内部不会再改成别的曲线;它们会使用这里设置的最小/最大耗时、起步停顿和落点停顿。

LeftClick

按下鼠标左键

long LeftClick()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.LeftClick()

LeftDoubleClick

双击鼠标左键

long LeftDoubleClick()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.LeftDoubleClick()

LeftDown

按住鼠标左键

long LeftDown()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.LeftDown()

LeftUp

弹起鼠标左键

long LeftUp()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.LeftUp()

MiddleClick

按下鼠标中键

long MiddleClick()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.MiddleClick()

MiddleDoubleClick

双击鼠标中键

long MiddleDoubleClick()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.MiddleDoubleClick()

MiddleDown

按住鼠标中键

long MiddleDown()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.MiddleDown()

MiddleUp

弹起鼠标中键

long MiddleUp()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.MiddleUp()

RightClick

按下鼠标右键

long RightClick()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.RightClick()

RightDoubleClick

双击鼠标右键

long RightDoubleClick()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.RightDoubleClick()

RightDown

按住鼠标右键

long RightDown()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.RightDown()

RightUp

弹起鼠标右键

long RightUp()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.RightUp()

XButton1Click

按下鼠标侧键 1

long XButton1Click()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.XButton1Click()

XButton1DoubleClick

双击鼠标侧键 1

long XButton1DoubleClick()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.XButton1DoubleClick()

XButton1Down

按住鼠标侧键 1

long XButton1Down()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.XButton1Down()

XButton1Up

弹起鼠标侧键 1

long XButton1Up()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.XButton1Up()

XButton2Click

按下鼠标侧键 2

long XButton2Click()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.XButton2Click()

XButton2DoubleClick

双击鼠标侧键 2

long XButton2DoubleClick()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.XButton2DoubleClick()

XButton2Down

按住鼠标侧键 2

long XButton2Down()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.XButton2Down()

XButton2Up

弹起鼠标侧键 2

long XButton2Up()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.XButton2Up()

Wheel

垂直滚轮滚动指定距离

long Wheel(delta)
参数 类型 描述
delta int 滚动距离。正数向上,负数向下,120 为一格滚轮

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.Wheel(120)
op.Wheel(-120)

HWheel

水平滚轮滚动指定距离

long HWheel(delta)
参数 类型 描述
delta int 滚动距离。正数向右,负数向左,120 为一格滚轮距离

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.HWheel(120)
op.HWheel(-120)

WheelDown

滚轮向下滚

long WheelDown()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.WheelDown()

WheelUp

滚轮向上滚

long WheelUp()

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.WheelUp()

GetCursorShape

获取当前鼠标形状特征

string GetCursorShape()

返回值

类型:string

返回当前鼠标形状的特征字符串,获取失败返回空字符串

示例

shape = op.GetCursorShape()

SetMouseDelay

该函数旨在设置鼠标单击或双击时,鼠标按下和弹起之间的时间间隔。

long SetMouseDelay(type,delay)
参数 类型 描述
type string 鼠标类型,取值: "normal" | "windows" | "dx"
delay int 指定鼠标按下和弹起之间的时间间隔,单位通常为毫秒(milliseconds)

当取值为"normal",默认为: 30ms

当取值为"windows",默认为: 10ms

当取值为"dx",默认为: 40ms

返回值

类型:int

  • 0:失败
  • 1:成功

示例

op.SetMouseDelay("dx",1000)

Clone this wiki locally