核心概念 · 1
坐标体系
软件靠坐标定位每一次点击。前台和后台用的是两套不同的坐标,搞混就会整体偏移。这是「点击位置不对、换台电脑就不准」最常见的来源。
两套坐标,两个原点
屏幕上每个点用 X(横向)和 Y(纵向)两个数定位。区别在于原点 (0,0) 算在哪里,软件里有两套标准:
┌─────────────────────────────────────────┐
│ (0,0) ← 前台坐标的原点 = 整个屏幕的左上角 │
│ │
│ ┌──────────────────────┐ │
│ │ 某某程序 _ □ × │ ← 标题栏 │
│ ├──────────────────────┤ │
│ │ (0,0) ← 后台坐标的原点 │ │
│ │ = 窗口内容区的左上角 │ │
│ │ [按钮] │ │
│ └──────────────────────┘ │
└─────────────────────────────────────────┘
| 前台坐标 | 后台坐标 |
| 原点 (0,0) | 整个屏幕的左上角 | 目标窗口内容区的左上角 |
| 是否含标题栏边框 | 含(整个桌面) | 不含(只算窗口内容那块) |
| 何时用 | 不勾后台模式 | 勾了后台模式 |
前台坐标以整个屏幕为基准;后台坐标以目标窗口的内容区为基准,窗口拖到哪,里面按钮的坐标都不变。
如果一个后台脚本被当成前台坐标来点,偏移量正好等于窗口位置加上边框和标题栏的高度——这就是后台点击整体偏一截的原因。
录制会自动选对坐标
不需要手动换算。前台录制存屏幕坐标,后台录制存目标窗口的客户区坐标,回放时按同一套还原。只要录制和回放的模式一致,坐标就是对的。
注意鼠标滚轮是例外。它在后台录制时仍存屏幕坐标(回放分支里自带一道转换),平时不用管。
手动获取坐标
不靠录制、想自己填坐标时:移动鼠标时状态栏会显示当前屏幕坐标;找图、找色、OCR 的框选按钮在框选时也会显示坐标。
这些工具给的都是屏幕坐标。要填进后台动作时需要的是客户区坐标,两者差一个窗口位置,所以后台动作优先用后台录制或后台框选取坐标。
跨分辨率:表达式区域
坐标按像素算。在 1920×1080 上录的「点正中 (960,540)」,到 2560×1440 上正中其实是 (1280,720),画面变大坐标没变,就偏了。
找图、找色、OCR 三类动作的查找区域支持变量和表达式,让同一脚本跨分辨率适配:
| 写法 | 含义 |
${baseX} | 引用变量 baseX 的当前值 |
${baseX*1.5} | 按比例缩放 |
${posX+100} | 加偏移 |
${(w-200)/2} | 复合运算,支持 + - * / ( ),整数小数均可 |
提示表达式求值失败(变量不存在或写错)不会让脚本中断,会自动退回原始数值并记一条日志。
目前只有查找区域支持表达式,普通点击坐标本身不支持。跨分辨率主要靠找图 / 找色 / OCR 定位后点到识别结果上,而不是写死坐标。
多屏幕
- 副屏坐标接着主屏排。主屏 1920 宽,副屏上的点 X 坐标从 1920 往后数。软件按标签页设定的目标屏幕换算。
- 单片机模式只按主屏换算坐标,目标在副屏上会点偏。多屏配合单片机模式时,请把目标程序放在主屏。
常见问题
前台测好好的,一开后台就点偏了?
前台和后台坐标的原点不同。开后台后坐标按窗口客户区算,需要开着后台模式重新录或重新框选,不能把前台坐标直接搬过去。
同一脚本发给别人就不准?
多半是分辨率或缩放不同。可以让对方用相同分辨率,或把脚本改成找图 / 找色 / OCR 定位,而不是写死坐标。
显示缩放 125%、150% 会影响坐标吗?
会。录制存的是原始像素坐标,回放不会自动按缩放换算。100% 下录的脚本到 150% 的电脑会对不上,建议用找图定位,或保证录制和回放的缩放一致。
窗口被拖动后,后台脚本还准吗?
核心概念 · 2
输入模式
点击和按键有几种发送方式:标准、硬件、罗技、内核、单片机,再加一个后台模式。它们对应不同程序的兼容性需求,大多数情况用默认就够了。
两个问题决定怎么选
看似很多,其实只需回答两件事:
- 要不要占用你的鼠标键盘。不介意脚本运行时鼠标自己动,用前台(标准 / 硬件 / 罗技 / 内核 / 单片机);想让脚本在后台跑、自己还能用电脑,用后台模式。
- (前台时)程序认不认普通模拟输入。点了有反应就用标准模式;点了没反应,再往上换硬件、内核、单片机。
决策表
从上往下,选第一个符合你的:
| 你的情况 | 用 | 需要准备 |
| 普通软件、网页、办公,点了有反应 | 标准模式(默认) | 无 |
| 想边跑脚本边用电脑,或窗口被挡住、最小化也要操作 | 后台模式 | 选定目标窗口 |
| 标准点了没反应,程序拦了模拟输入 | 硬件模式 | 无(纯软件) |
| 硬件模式还不行,要更接近真实的输入 | 内核模式 | 装内核驱动并重启 |
| 内核也搞不定,或环境完全不接受软件注入 | 单片机模式 | 外接 Pico 硬件 |
| 有罗技外设和驱动,想走罗技通道 | 罗技模式 | 装 G HUB 或 LGS |
原则能用标准就用标准。越往下兼容性越强,但要求也越高(要驱动、要硬件、要重启)。不必一开始就上内核或单片机。
五种前台模式
这五种都是前台真实输入,会操作你真实的光标和键盘,脚本运行时鼠标会自己动,期间无法用电脑做别的。
标准模式(默认)
最常规的 Windows 模拟输入,最快、零配置。浏览器、聊天、办公、网页等日常自动化基本都能胜任。少数对模拟输入有检测的程序会忽略它。
硬件模式
比标准更底层的软件模拟:键盘用扫描码,鼠标用绝对坐标,并适当增加延迟便于目标程序识别。标准点了没反应时先升级到这个。不需要额外硬件或驱动。勾选时会询问是否加 30–80ms 随机延迟。
注意常说的「硬件级输入加 30–50ms 延迟」指的是内核模式,不是这里的硬件模式。硬件模式是软件层增强。
罗技模式
借道罗技官方驱动产生输入。适合本身使用罗技外设、装了驱动并想走这条通道的情况,是标准、硬件之外的一条可选路径。需安装 Logitech G HUB(新版)或 LGS(老版),驱动不可用时软件会提示下载。
内核模式
基于内核驱动的硬件级输入,兼容性最强、最稳定,系统几乎无法区分它和真实键鼠。适合硬件模式仍搞不定的程序。首次勾选会检测并提权安装驱动,装完必须重启电脑,且只支持 64 位 Windows。
注意开启「核心隔离 / 内存完整性」(HVCI)的电脑,驱动能装上但加载会被系统拦截,表现为装了没用——需在 Windows 安全中心关闭内存完整性后重启。此外,内核模式与单片机模式不能在同一台电脑共用,内核驱动会吞掉 USB 硬件键鼠的输入,两者同机时二选一。
单片机模式
通过外接专用单片机输出真实的 USB HID 键鼠信号。系统看到的是一个真实外设在动,这已经不是软件注入,兼容性最强。需要一块烧录好固件的单片机,用 USB 连接,软件通过串口自动识别。详见 单片机模式详解。
注意串口是独占的,使用前要关闭占用该 COM 口的其它程序;只按主屏换算坐标,多屏时目标程序放主屏;与内核模式同机互斥。
后台模式
前面五种都会占用鼠标。后台模式不同:它向一个指定的窗口直接发送操作指令,不动你真实的光标,因此脚本在后台运行时你仍能正常用电脑,目标窗口即使被挡住或最小化也能继续操作。
使用后台模式需要两步:勾选后台模式,并选定目标窗口(见本页《窗口绑定与后台》一节)。
后台输入方式
后台是「向窗口发指令」,具体用什么技术发还能再选(仅在后台模式下有意义):
| 方式 | 说明 |
| 通用模式(默认) | 防置顶加注入,兼容性较好,多数情况用它 |
| 增强消息模式 | 标准消息模式的加强版 |
| 标准消息模式 | 最基础的后台消息发送 |
| 插件模式(收费) | 基于定制大漠插件,需卡密激活,对某些特殊窗口更有效 |
默认用通用模式,不行再试其它。插件模式是付费功能,针对通用模式搞不定的特殊窗口,一般用不到。后台模式下坐标按目标窗口客户区计算,详见《坐标体系》。
模式之间的关系
硬件、罗技、后台、内核、单片机这几个互斥:勾上一个,其它会自动取消;都不勾就是标准模式。不必关心内部优先级,软件保证同时只启用一个。
核心概念 · 3
变量与表达式
变量就是给一段数据起个名字存起来,之后用名字取用。它让脚本能记数、能按数据批量做事、能根据情况判断——是从「重复点击」迈向「智能脚本」的关键。
建一个变量
用「变量」动作创建或修改变量。它能做四种操作:
| 操作 | 作用 |
| 设置 | 直接赋值(最常用),如把 count 设为 0 |
| 增加 | 在原值上做加法,数字相加,常用于计数 |
| 追加 | 把新内容拼到原文字后面 |
| 时间运算 | 对时间做加减(见下文「时间运算」) |
变量可以存几种类型的值:文字、数字、布尔(真/假)、坐标(X,Y)、当前鼠标位置、当前时间、随机数。变量名用字母或下划线开头,区分大小写。
引用变量:${名字}
要在文字里插入变量的值,用 ${变量名} 包起来。比如键盘输入的文本写「订单号 ${编号}」,运行时 ${编号} 会被替换成该变量当前的值。
能用 ${} 的地方包括:文本输入、查找区域、条件表达式。坐标类变量可以取它的分量,写 ${点.X}、${点.Y}。
注意引用一个不存在的变量时,它不会原样保留,而是被替换成 false(取分量时是 0)。所以条件或文本里出现莫名其妙的 false,多半是变量名写错或还没赋值。
让变量参与计算
把变量的「值类型」设成数字,它的值里就能写算式,软件会算出结果再存。例如:
| 值类型 | 值写成 | 结果 |
| 数字 | ${price}*${count} | 单价乘数量 |
| 数字 | ${total}+10 | 在 total 基础上加 10 |
| 数字 | (${a}+${b})/2 | 求平均 |
数组与循环:批量处理的核心
要让脚本把「张三、李四、王五」逐个填进表单,就用数组配合循环。
在「变量」动作里打开数组模式,把多条内容一行一个填进去;放在循环里时,每一轮自动取其中一行。配合循环的索引变量,就能按顺序逐条取值。
要点给循环设了「索引变量」后,它会在每一轮自动写入序号 0、1、2……你不需要手动给它加一。用 ${数组[索引]} 取对应那条,下标可以是数字,也可以是另一个变量名。
数组取值越界时,默认行为是「从头开始循环」——取完最后一条又回到第一条,适合无限循环里反复轮取。
系统内置变量
有些值软件已经替你准备好,用花括号取用(注意:系统内置变量用 { },你自己的变量引用用 ${ },别混):
| 写法 | 含义 |
{MousePos} / {MouseX} / {MouseY} | 当前鼠标坐标 / X / Y |
{_Time} / {_Date} | 当前时间 / 日期 |
{_Random} | 随机数 |
{_ScreenWidth} / {_ScreenHeight} | 屏幕宽 / 高 |
时间运算与到期判断
「变量」动作的「时间运算」操作,可以在某个基准时间上加减一段时长:基准时间留空就是当前时间,方向选加或减,数量可以是变量或算式,单位从秒、分、小时、天、周、月、年里选。
结果有三种输出形态:时间对象(可继续算)、格式化字符串(直接显示)、时间戳秒(数字,适合做比较)。
提示做「冷却 / 到期」判断时,把到期时间算成时间戳秒存起来,之后用条件比较两个时间戳数字的大小,比直接比时间字符串可靠。
条件表达式
「条件」动作和「条件循环」用同一套表达式语法判断真假:
| 类别 | 可用写法 |
| 比较 | == != > < >= <= |
| 逻辑 | &&(且) ||(或) !(非) |
| 算术 | + - * / %,可直接出现在条件里,如 ${a}/${b} > 3 |
例子:${count} > 10、${找到} == 1、${血量} < 50 || ${蓝量} < 20。字符串比较自动忽略大小写。条件里直接用 ${结果变量} 引用找图、找色、OCR 的结果(见下一篇)。
注意条件表达式不支持 contains 这类「包含」运算符。「包含文字」只是 OCR 的一种匹配模式,不是变量条件的语法。
核心概念 · 4
找图、找色、OCR
写死坐标的脚本,换台电脑、挪个窗口就废了。这三类动作让脚本先「看」屏幕、找到目标再操作,是写出耐用脚本的关键。
三者怎么选
| 动作 | 找什么 | 典型场景 |
| 找图 | 一张小图(图标、按钮的截图) | 找到某个图标就点它 |
| 找色 | 某个颜色的像素点 | 检测血条变红、状态灯亮起 |
| OCR | 屏幕上的文字 | 找到「确定」按钮、读出一个数值 |
三者有共同的设置思路:先划定查找区域(缩小范围更快更准),设一个匹配宽松度,找到后做点什么(点击或存进变量),并把找没找到写进一个结果变量供后面判断。
找图
- 相似度:0 到 1,默认 0.9。越高越严格。找不到就适当调低(0.8 左右),误匹配就调高。
- 匹配模式:默认「标准」(按 RGB 像素比对)。画面有明暗变化时可选「OpenCV 基础」(抗整体明暗);分辨率会变时用「OpenCV 多尺度」;只想比对轮廓、忽略局部差异时用「遮罩匹配」。
- 多图:可以放多张图,策略选「找到任意一张」或「必须全部找到」。
- 遮罩:给目标图配一张黑白遮罩图,黑色区域忽略、白色区域参与匹配,用来跳过会变化的部分(配合遮罩匹配模式)。
- 找到之后:可勾「自动点击」并设点击偏移,也可以只把结果存进变量、自己后面再处理。
提示截目标图时选稳定、独特的小块,别截会变的部分(数字、高亮)。图越小越独特,越快越准。
找色
- 目标颜色 + 容差:容差 0 到 255,0 是精确匹配,越大允许的色差越大。
- HSV 模式:对光照变化更稳,画面明暗会变时可以打开。
- 单点 / 多点:多点找色要求几个相对位置的颜色都对上,能大幅降低误判。
- 查找区域:全屏、自定义区域、屏幕中心或当前窗口。
OCR 文字识别
- 动作类型:查找并点击、仅查找、读取文字、验证文字是否存在、识别数字等。
- 匹配模式:精确、包含(默认)、正则、忽略大小写。「包含」最常用——搜「确」能匹配到「确定」「确认」。
- 置信度:默认 60,识别不到可调低,识别错可调高。
- 批量点击:可开启「依次点击所有匹配文字」并设点击间隔。
注意首次使用 OCR 需要下载识别组件(约 250MB),一次下载长期使用。艺术字、手写字识别率低,需要清晰、对比明显的文字。
结果变量速查
找完之后,结果会写进固定名字的变量,在「条件」动作里用 ${名字} 取用来做判断。最常用的是「找没找到」:
| 动作 | 「是否找到」变量 | 其它常用 |
| 找图 | FindResult_Found | FindResult_X / FindResult_Y(坐标) |
| 找色 | LastColorFindSuccess | LastColorFindCount(数量) |
| OCR | OCR_TextFound | OCR_FoundText(文字)、OCR_FoundX / OCR_FoundY |
找图的结果变量前缀(默认 FindResult)可以在动作里自定义;OCR 的 OCR_ 前缀是固定的。用法示例:条件写 ${FindResult_Found} == true 来判断「找到了就……」。
找不到怎么办
- 适当降低相似度 / 加大容差。
- 缩小查找区域到目标附近,既快又少误匹配。
- 找图换个匹配模式(明暗变化用 OpenCV 基础,分辨率变化用多尺度)。
- 重新截一张更清晰、更独特的目标图。
核心概念 · 5
窗口绑定与后台
后台模式要操作的是「哪个窗口」,得先绑定。这一篇讲怎么绑、怎么换,以及窗口管理和进程管理两个动作怎么配合做无人值守。
后台模式怎么绑定窗口
- 勾选顶栏的「后台模式」。若当前标签页还没绑过窗口,会弹出窗口选择器让你挑目标。
- 选好后,软件会把这个窗口绑到当前标签页,并自动给页内所有动作设好后台目标。
- 想换窗口时,点「切换窗口」按钮(勾了后台模式才出现),重新选一个,所有动作的目标会一次性改过去。
绑定分两层:标签页记着主目标窗口,每个动作各自也带着目标窗口。勾选 / 切换窗口时会把标签页的目标同步到每个动作,新加的动作也会自动跟上当前的后台目标。
注意「切换窗口」是更换后台目标窗口,不是切换前后台运行方式。后台模式与内核、单片机模式互斥。
窗口管理动作
用来在脚本里操作窗口本身——激活、最小化、移动、关闭等。它能做这些操作:
| 操作 | 用途 |
| 激活窗口 | 把目标窗口切到前台(最常用) |
| 最小化 / 最大化 / 还原 | 改变窗口状态 |
| 关闭窗口 | 关掉目标窗口 |
| 移动 / 调整大小 | 把窗口摆到固定位置和尺寸 |
| 置顶 / 取消置顶 / 修改标题 | 其它窗口操作 |
查找目标窗口可以按标题、类名或进程名(都是部分匹配),查找内容支持 ${变量}。两个实用字段:
- 等待窗口出现(秒):找不到窗口时持续重试,最长等这么多秒。适合开机自启等「目标程序还没启动完」的时序场景。
- 失败时跳过:窗口不存在或操作失败时跳过这个动作继续往下,而不是报错停脚本。
提示「激活窗口」用了强制激活:普通的激活有时会被 Windows 的前台锁拒绝,软件会自动用更强的方式(挂接前台线程、系统切换兜底)确保窗口真的切到前台。
进程管理动作
用来启动 / 结束程序、等待程序。能做这些操作:运行程序、关闭进程、检查进程是否存在、等待进程启动、等待进程结束。
「运行程序」可设启动参数、工作目录、是否隐藏窗口、是否等它退出。
提示用「运行程序」启动的程序,默认以普通权限启动,效果等同你在桌面双击它。这能避免某些程序(如带原生模块的 Electron 应用)在管理员环境下报「找不到模块」。确实需要管理员权限时,再勾「以管理员运行」。