核心概念 · 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

输入模式

点击和按键有几种发送方式:标准、硬件、罗技、内核、单片机,再加一个后台模式。它们对应不同程序的兼容性需求,大多数情况用默认就够了。

两个问题决定怎么选

看似很多,其实只需回答两件事:

  1. 要不要占用你的鼠标键盘。不介意脚本运行时鼠标自己动,用前台(标准 / 硬件 / 罗技 / 内核 / 单片机);想让脚本在后台跑、自己还能用电脑,用后台模式。
  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_FoundFindResult_X / FindResult_Y(坐标)
找色LastColorFindSuccessLastColorFindCount(数量)
OCROCR_TextFoundOCR_FoundText(文字)、OCR_FoundX / OCR_FoundY

找图的结果变量前缀(默认 FindResult)可以在动作里自定义;OCR 的 OCR_ 前缀是固定的。用法示例:条件写 ${FindResult_Found} == true 来判断「找到了就……」。

找不到怎么办

  • 适当降低相似度 / 加大容差
  • 缩小查找区域到目标附近,既快又少误匹配。
  • 找图换个匹配模式(明暗变化用 OpenCV 基础,分辨率变化用多尺度)。
  • 重新截一张更清晰、更独特的目标图。
核心概念 · 5

窗口绑定与后台

后台模式要操作的是「哪个窗口」,得先绑定。这一篇讲怎么绑、怎么换,以及窗口管理和进程管理两个动作怎么配合做无人值守。

后台模式怎么绑定窗口

  1. 勾选顶栏的「后台模式」。若当前标签页还没绑过窗口,会弹出窗口选择器让你挑目标。
  2. 选好后,软件会把这个窗口绑到当前标签页,并自动给页内所有动作设好后台目标。
  3. 想换窗口时,点「切换窗口」按钮(勾了后台模式才出现),重新选一个,所有动作的目标会一次性改过去。

绑定分两层:标签页记着主目标窗口,每个动作各自也带着目标窗口。勾选 / 切换窗口时会把标签页的目标同步到每个动作,新加的动作也会自动跟上当前的后台目标。

注意「切换窗口」是更换后台目标窗口,不是切换前后台运行方式。后台模式与内核、单片机模式互斥。

窗口管理动作

用来在脚本里操作窗口本身——激活、最小化、移动、关闭等。它能做这些操作:

操作用途
激活窗口把目标窗口切到前台(最常用)
最小化 / 最大化 / 还原改变窗口状态
关闭窗口关掉目标窗口
移动 / 调整大小把窗口摆到固定位置和尺寸
置顶 / 取消置顶 / 修改标题其它窗口操作

查找目标窗口可以按标题、类名或进程名(都是部分匹配),查找内容支持 ${变量}。两个实用字段:

  • 等待窗口出现(秒):找不到窗口时持续重试,最长等这么多秒。适合开机自启等「目标程序还没启动完」的时序场景。
  • 失败时跳过:窗口不存在或操作失败时跳过这个动作继续往下,而不是报错停脚本。
提示「激活窗口」用了强制激活:普通的激活有时会被 Windows 的前台锁拒绝,软件会自动用更强的方式(挂接前台线程、系统切换兜底)确保窗口真的切到前台。

进程管理动作

用来启动 / 结束程序、等待程序。能做这些操作:运行程序、关闭进程、检查进程是否存在、等待进程启动、等待进程结束。

「运行程序」可设启动参数、工作目录、是否隐藏窗口、是否等它退出。

提示用「运行程序」启动的程序,默认以普通权限启动,效果等同你在桌面双击它。这能避免某些程序(如带原生模块的 Electron 应用)在管理员环境下报「找不到模块」。确实需要管理员权限时,再勾「以管理员运行」。