YStudio Y++

鼠标支持库

Y++ / YStudio 开发文档 · 一点滴

扁平命令式支持库(不是类)。路径:支持库 → 鼠标支持库。

分类:

分类 内容
鼠标操作 取位、移动、点击、滚轮、拖拽、区域限制、光标显示、俘获
窗口坐标 客户区坐标、与屏幕互转、点窗口中心
鼠标等待 等按键、进/出矩形、等移动
鼠标系统 速度、左右键交换、虚拟屏幕
鼠标轨迹 录制 / 回放 / 存盘 / 变换(自动化路径,不是屏幕拖尾特效)

适用:Windows 10 / 11(x86、x64)。屏幕坐标原点在左上角,单位像素。窗口相关命令句柄为 0 或省略时用当前前台窗口。模拟通过 SendInput;部分高权限或游戏窗口可能拦截。

与窗体/控件事件(如「鼠标按下」)不同:本库是全局操作命令。


快速开始

启动() {
    整数 x = 取鼠标水平位置()
    整数 y = 取鼠标垂直位置()
    输出("鼠标: " + 到文本(x) + "," + 到文本(y))

    平滑移动鼠标(800, 400, 400)
    模拟鼠标左键单击()
    模拟鼠标滚轮(-120)   // 向下滚一格(通常 120 为一格)
}

指定位置点击 / 拖拽:

鼠标左键单击位置(400, 300)
鼠标右键单击位置(400, 300)
平滑拖拽到(500, 350, 300)

相对当前窗口客户区:

移动鼠标到窗口中心()
鼠标单击窗口坐标(80, 40)

鼠标操作

命令 返回 说明
取鼠标水平位置() 整数 屏幕 X
取鼠标垂直位置() 整数 屏幕 Y
移动鼠标(X, Y) 逻辑 瞬时移到屏幕坐标
相对移动鼠标(水平偏移, 垂直偏移) 逻辑 相对当前位置;右/下为正
平滑移动鼠标(X, Y, 时长毫秒) 逻辑 缓动移动;时长≤0 等同 移动鼠标
曲线移动鼠标(X, Y, 时长毫秒, 弯曲度) 逻辑 二次贝塞尔;弯曲度常用 ±50~±200
鼠标拖拽到(X, Y) 逻辑 左键按下 → 瞬时移到目标 → 放开
平滑拖拽到(X, Y, 时长毫秒) 逻辑 左键按下 → 平滑移动 → 放开
鼠标左键单击位置(X, Y) 逻辑 移到坐标并左键单击
鼠标右键单击位置(X, Y) 逻辑 移到坐标并右键单击
鼠标左键双击位置(X, Y) 逻辑 移到坐标并左键双击
模拟鼠标左键单击() 逻辑 当前位置左键单击
模拟鼠标右键单击() 逻辑 当前位置右键单击
模拟鼠标中键单击() 逻辑 当前位置中键单击
模拟鼠标左键双击() 逻辑 当前位置左键双击
模拟鼠标侧键1单击() 逻辑 前进侧键(XButton1)
模拟鼠标侧键2单击() 逻辑 后退侧键(XButton2)
鼠标左键长按(按住毫秒) 逻辑 当前位置按住再放开
模拟鼠标左键按下() / 模拟鼠标左键放开() 逻辑 单独按下 / 放开
模拟鼠标右键按下() / 模拟鼠标右键放开() 逻辑 同上
模拟鼠标中键按下() / 模拟鼠标中键放开() 逻辑 同上
模拟鼠标滚轮(滚动量) 逻辑 正上负下;通常 120 一格
模拟鼠标水平滚轮(滚动量) 逻辑 正向右、负向左
模拟鼠标滚轮到位置(X, Y, 滚动量) 逻辑 先移动再滚轮
鼠标左键是否按下() 等 逻辑 左/右/中/侧键1/侧键2 物理状态
鼠标是否在矩形内(左, 顶, 右, 底) 逻辑 半开矩形 [左,右)×[顶,底)
限制鼠标区域(...) / 解除鼠标区域限制() 逻辑 裁剪指针;退出前务必解除
显示鼠标光标() / 隐藏鼠标光标() 逻辑 系统光标显隐
取鼠标双击间隔() 整数 系统双击间隔(毫秒)
俘获鼠标() / 释放鼠标() / 鼠标是否已俘获() 逻辑 SetCapture / ReleaseCapture

按键状态示例:

如果 (鼠标左键是否按下()) {
    输出("左键正按住")
}

俘获(拖出控件仍收移动/抬起):

俘获鼠标()
// …拖动处理…
释放鼠标()

窗口坐标

句柄参数均可省略;0 = 前台窗口。

命令 返回 说明
取鼠标窗口水平位置([窗口句柄]) 整数 相对客户区 X
取鼠标窗口垂直位置([窗口句柄]) 整数 相对客户区 Y
移动鼠标到窗口坐标(客户区X, 客户区Y, [句柄]) 逻辑 按客户区移动
鼠标单击窗口坐标(客户区X, 客户区Y, [句柄]) 逻辑 客户区坐标 + 左键单击
移动鼠标到窗口中心([句柄]) 逻辑 客户区中心
客户区转屏幕X/Y(客户区X, 客户区Y, [句柄]) 整数 客户区 → 屏幕
屏幕转客户区X/Y(屏幕X, 屏幕Y, [句柄]) 整数 屏幕 → 客户区
整数 cx = 屏幕转客户区X(取鼠标水平位置(), 取鼠标垂直位置())
整数 cy = 屏幕转客户区Y(取鼠标水平位置(), 取鼠标垂直位置())
移动鼠标到窗口坐标(cx, cy)

鼠标等待

超时毫秒 ≤0 表示一直等。等待期间会泵送消息。

命令 返回 说明
等待鼠标按键(按键掩码, 等待按下, 超时毫秒) 逻辑 掩码:1左 2右 4中 8侧1 16侧2;等待按下 真=等到按下,假=等到放开
等待鼠标进入矩形(左, 顶, 右, 底, 超时毫秒) 逻辑 进入半开矩形
等待鼠标离开矩形(...) 逻辑 离开半开矩形
等待鼠标移动(超时毫秒) 逻辑 相对调用时位置发生移动
如果 (等待鼠标按键(1, 真, 5000)) {
    输出("左键已按下")
}
如果 (等待鼠标移动(3000)) {
    输出("指针已动")
}

鼠标系统

命令 返回 说明
取鼠标移动速度() 整数 系统速度 1~20(默认约 10)
置鼠标移动速度(速度) 逻辑 写入系统参数,影响用户手感,慎用
鼠标左右键是否交换() 逻辑 是否开启左右键交换
取虚拟屏幕左边/顶边() 整数 多显示器虚拟桌面边界(可为负)
取虚拟屏幕宽度/高度() 整数 虚拟桌面总尺寸

鼠标轨迹

用于录制回放指针路径与按键(自动化),不是屏幕拖尾特效。

按键位:1=左,2=右,4=中(可相加)。

录制 / 回放

启动() {
    开始录制鼠标轨迹(10)   // 采样间隔建议 8~20ms
    延时(3000)             // 此时请移动并点击…
    停止录制鼠标轨迹()
    输出("点数=" + 到文本(取鼠标轨迹点数()))
    保存鼠标轨迹("轨迹.txt")

    延时(500)
    回放鼠标轨迹(100)         // 含按键,100=原速
    // 回放鼠标轨迹仅移动(150) // 仅路径,1.5 倍速
    // 循环回放鼠标轨迹(100, 3)
}

手写路径 / 变换

清空鼠标轨迹()
添加鼠标轨迹点(100, 100, 0, 0)
添加鼠标轨迹点(200, 150, 30, 0)
平移鼠标轨迹(50, -20)
缩放鼠标轨迹(80)          // 以首点为原点,百分比
截取鼠标轨迹(0, 取鼠标轨迹点数())
反转鼠标轨迹()
回放鼠标轨迹仅移动(100)

轨迹命令一览

命令 返回 说明
开始录制鼠标轨迹(采样间隔毫秒) 逻辑 清空旧轨迹并后台采样;≤0 按 10
停止录制鼠标轨迹() 逻辑 停止采样
鼠标轨迹是否正在录制() 逻辑 是否录制中
清空鼠标轨迹() 无 停止并清空内存点
取鼠标轨迹点数() 整数 当前点数
取鼠标轨迹点X/Y/延时/按键(索引) 整数 从 0 起;越界 X/Y 等为 0
取鼠标轨迹总时长() 整数 各点延时之和(毫秒)
添加鼠标轨迹点(X, Y, 延时毫秒, 按键) 逻辑 手写一点
回放鼠标轨迹(速度百分比) 逻辑 带按键;结束会放开仍按下的键
回放鼠标轨迹仅移动(速度百分比) 逻辑 只移指针
循环回放鼠标轨迹(速度百分比, 次数) 逻辑 带按键循环;次数≤0 按 1
保存鼠标轨迹(文件路径) / 载入鼠标轨迹(...) 逻辑 YPLMPATH1 文本格式
置/取鼠标轨迹最大点数 无/整数 默认 100000,范围约 100~2000000
反转鼠标轨迹() 逻辑 反转点序(首点延时清零)
平移鼠标轨迹(水平偏移, 垂直偏移) 逻辑 全体加点偏移
缩放鼠标轨迹(百分比) 逻辑 以首点为原点缩放
截取鼠标轨迹(起始索引, 结束索引) 逻辑 保留 [起始, 结束)

控件「鼠标指针」属性

运行期可读写:

图片框1.鼠标指针 = "资源/press.cur"  // 或 hand / arrow / …
图片框1.鼠标指针 = ""                 // 还原默认