扁平命令式支持库(不是类)。路径:支持库 → 鼠标支持库。
分类:
| 分类 | 内容 |
|---|---|
| 鼠标操作 | 取位、移动、点击、滚轮、拖拽、区域限制、光标显示、俘获 |
| 窗口坐标 | 客户区坐标、与屏幕互转、点窗口中心 |
| 鼠标等待 | 等按键、进/出矩形、等移动 |
| 鼠标系统 | 速度、左右键交换、虚拟屏幕 |
| 鼠标轨迹 | 录制 / 回放 / 存盘 / 变换(自动化路径,不是屏幕拖尾特效) |
适用: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.鼠标指针 = "" // 还原默认