Automation Operation 2.60 自动操作工具:鼠标键盘模拟与图像识别实战

发布时间:2026/10/2 16:37:29
Automation Operation 2.60 自动操作工具:鼠标键盘模拟与图像识别实战 简介Automation Operation 2.60 是一款面向自动化测试、数据抓取与日常办公场景的可视化自动操作工具适合无编程基础的个人用户及希望优化业务流程的团队使用。它通过拖拽式图形界面整合鼠标键盘模拟、图片与颜色识别、OCR 文字识别、浏览器控制、变量管理及 Excel 数据交互等能力并支持录制回放、循环执行、快捷键与配置管理可快速搭建复杂的自动化流程。资源包共 414 个文件约 742.75MB以 300 个 js 脚本、24 个 dll 动态库、9 个 exe 可执行程序为核心辅以 json 配置、css 样式、sh 与 ps1 脚本、yml 及 html 页面等构成完整的运行与配置体系。目前已有 501 人学习下载。借助该工具读者可掌握从元素定位、识别模式选择到变量驱动与后台执行的完整思路并参考其目录结构理解自动化项目的组织方式适用于自动化测试、网页操作与流程自动化等场景。1. Automation Operation 2.60 自动操作工具从鼠标键盘到图像识别的可视化落地路径Automation Operation 2.60 这类自动操作工具核心价值在于把「鼠标点击、键盘输入、屏幕识别」三件事用一套可视化 GUI 串起来让不写代码的人也能搭出一条可重复执行的自动化流水线。它解决的是重复性桌面操作问题批量填表、定时截图比对、跨软件搬运数据、游戏或测试环境里的固定动作序列。适合两类人一类是被重复点击折磨的运营、测试、数据录入岗另一类是想快速验证自动化思路、不想一上来就啃 Win32 API 和图像匹配算法的开发者。热词里 GUI、鼠标、键盘、识别这几个词恰好对应它的四个能力层——界面编排、输入模拟、图像识别、流程调度。下面按「先立住原理、再动手复现、最后讲坑」的顺序拆开讲每一步都给到能直接抄的参数和命令。2. 自动操作工具的底层能力拆解输入模拟与图像识别怎么配合2.1 鼠标键盘模拟的三种实现层级与选型理由桌面自动化的输入模拟常见做法分三层。最底层是系统级 APIWindows 上是 SendInput 和 mouse_eventmacOS 上是 CGEventLinux 上是 XTest 或 uinput。这一层最稳能穿透大部分普通窗口但遇到以管理员权限运行的目标程序会失效因为 Windows 的 UIPI 机制会拦截低完整性进程向高完整性进程发送的输入。中间层是驱动级模拟通过虚拟 HID 设备注入事件兼容性最好但需要装驱动部署成本高。最上层是消息级模拟直接向目标窗口句柄 PostMessage 或 SendMessage速度快、不抢焦点但很多现代程序尤其是用 DirectX、Unity、Qt 渲染的根本不处理这些消息发了也白发。Automation Operation 2.60 这类工具通常默认走系统级 API因为它在「兼容性」和「免安装」之间平衡得最好。选型时先问自己三个问题目标程序是不是管理员权限运行是不是全屏独占或游戏引擎渲染需不需要后台操作不抢焦点三个都否系统级 API 足够有一个是就得考虑驱动级或消息级混合方案。我一般会先用系统级跑一遍翻车了再针对性换层而不是一上来就上驱动。2.2 图像识别定位模板匹配、特征点与 OCR 的适用边界图像识别在自动化里干的事是把「屏幕上某个按钮在哪」翻译成坐标。主流三条路模板匹配、特征点匹配、OCR 文字定位。模板匹配用 OpenCV 的 matchTemplate原理是拿一张小图在大图里滑窗算相似度返回最佳匹配位置。它快、实现简单但对缩放、旋转、亮度变化敏感适合界面固定、分辨率不变的场景。特征点匹配用 SIFT、ORB 这类算法提取关键点和描述子再配对能抗缩放旋转但计算量大且对纯色按钮、文字区域效果差。OCR 定位用 Tesseract 或 PaddleOCR先识别文字再拿文字框坐标适合按钮上有明确文字的场景缺点是慢且字体、背景复杂时识别率会掉。实操里我一般这样分工固定不变的图标用模板匹配带文字的按钮用 OCR需要跨分辨率适配的用特征点。Automation Operation 2.60 的可视化 GUI 通常把这几种封装成「找图」「找字」「找色」几个动作块你拖进去填参数就行。关键参数有三个相似度阈值模板匹配一般 0.8 起步界面有渐变或抗锯齿就降到 0.7、搜索区域限定 ROI 能大幅提速别全屏搜、匹配模式带透明通道的图用 TM_CCOEFF_NORMED纯色块用 TM_SQDIFF_NORMED。2.3 用 Python 复现一个最小可用的「找图 点击」闭环下面这段代码不依赖 Automation Operation 2.60 本体用 Python 把它的核心逻辑复现一遍方便你理解参数含义也方便在没有 GUI 的环境里做验证。import cv2 import numpy as np import pyautogui import time def find_and_click(template_path, threshold0.8, roiNone, clickTrue): # 截取全屏roi 为 (x, y, w, h) 时只截取该区域提速明显 screenshot pyautogui.screenshot() screen cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR) if roi: x, y, w, h roi screen screen[y:yh, x:xw] template cv2.imread(template_path) # TM_CCOEFF_NORMED 对亮度变化有一定容忍适合大多数界面 result cv2.matchTemplate(screen, template, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc cv2.minMaxLoc(result) if max_val threshold: # 匹配位置是左上角加半个模板宽高得到中心点 cx max_loc[0] template.shape[1] // 2 (roi[0] if roi else 0) cy max_loc[1] template.shape[0] // 2 (roi[1] if roi else 0) if click: pyautogui.click(cx, cy) return (cx, cy, max_val) return None # 调用示例在屏幕左上角 800x600 区域内找按钮相似度 0.75 for _ in range(10): pos find_and_click(button.png, threshold0.75, roi(0, 0, 800, 600)) if pos: print(f命中坐标 {pos[0]},{pos[1]}相似度 {pos[2]:.3f}) break time.sleep(0.5)逻辑说明先截图转成 OpenCV 的 BGR 格式再按 ROI 裁剪然后做模板匹配拿到相似度矩阵取最大值位置换算成屏幕绝对坐标最后点击。参数说明threshold 控制灵敏度调高减少误点但可能漏点调低反之roi 是性能关键全屏 1920x1080 匹配一张 50x50 的图大约 200ms限定到 800x600 能降到 60ms 左右TM_CCOEFF_NORMED 返回的是归一化相关系数范围 -1 到 1越接近 1 越像。失败时先看 max_val 是多少如果一直在 0.5 以下多半是模板图和实际渲染有缩放或颜色偏差重新截模板图即可。3. 可视化 GUI 编排一条完整自动化流程从拖拽到可执行3.1 流程节点的组织方式与变量传递Automation Operation 2.60 这类工具的 GUI 通常是一个画布加节点面板你把「鼠标点击」「键盘输入」「找图」「延时」「条件判断」「循环」这些节点拖到画布上用连线定义执行顺序。节点之间靠变量传递数据比如「找图」节点输出坐标变量pos_x、pos_y「鼠标点击」节点引用这两个变量作为点击位置。变量作用域一般分全局和局部全局变量跨节点可见局部变量只在当前循环或子流程内有效。编排时最容易犯的错是变量名写错或作用域搞混导致节点拿不到值直接跳过。我的习惯是每个节点输出变量都带前缀比如img_开头表示图像识别结果kb_开头表示键盘输入内容这样连线时一眼能看出数据来源。循环节点要特别注意退出条件常见做法是「找到图就退出」或「循环 N 次」别写成死循环否则 GUI 卡死只能强杀进程。3.2 键盘输入模拟从单键到组合键的参数配置键盘模拟比鼠标多一层复杂度按键码、按下/抬起、组合键时序。Windows 虚拟键码里字母 A-Z 是 0x41-0x5A数字 0-9 是 0x30-0x39功能键 F1-F12 是 0x70-0x7BCtrl 是 0x11Shift 是 0x10Alt 是 0x12。组合键 CtrlC 的模拟顺序必须是「按下 Ctrl → 按下 C → 抬起 C → 抬起 Ctrl」中间不能颠倒否则目标程序可能只收到一个孤立按键。import ctypes import time # Windows 虚拟键码 VK_CONTROL 0x11 VK_C 0x43 VK_SHIFT 0x10 VK_A 0x41 def key_down(vk): ctypes.windll.user32.keybd_event(vk, 0, 0, 0) def key_up(vk): ctypes.windll.user32.keybd_event(vk, 0, 2, 0) def combo(keys, interval0.05): # 依次按下所有键 for k in keys: key_down(k) time.sleep(interval) # 逆序抬起保证修饰键最后释放 for k in reversed(keys): key_up(k) time.sleep(interval) # CtrlShiftA 示例 combo([VK_CONTROL, VK_SHIFT, VK_A])逻辑说明keybd_event 第二个参数是扫描码一般填 0 让系统自己映射第三个参数 0 表示按下2 表示抬起。combo 函数先顺序按下再逆序抬起这是组合键模拟的标准写法。参数说明interval 控制按键间隔太小低于 0.02s某些程序会丢键太大超过 0.2s影响效率0.05s 是通用值。如果目标程序是游戏或需要精确时序的软件改用 SendInput 结构体它比 keybd_event 更底层、更可靠但代码量翻倍。3.3 识别节点的参数调优阈值、区域与多目标处理识别节点是整条流程里最需要调参的部分。以模板匹配为例GUI 上通常暴露这几个参数模板图路径、相似度阈值、搜索区域、是否灰度化、是否多目标。阈值前面说过0.8 起步搜索区域能限定就限定灰度化能提速约 30%但会丢失颜色信息如果模板和背景颜色对比明显灰度化反而更稳多目标模式会返回所有超过阈值的位置适合列表项批量点击但要注意去重否则相邻位置会重复命中。OCR 节点的参数更细语言模型中文用 chi_sim英文用 eng中英混排用 chi_simeng、页面分割模式PSM 6 适合单行文字PSM 11 适合稀疏文本、字符白名单限定只识别数字就填 0123456789能显著提升准确率。我一般先用默认参数跑一遍把识别结果打印出来看错在哪个字就针对性调白名单或换 PSM而不是盲目调阈值。4. 避坑与排查自动操作工具落地时最容易翻车的五个点4.1 现象点击位置偏移实际点到隔壁按钮原因屏幕缩放比例不是 100%。Windows 在高分屏上默认 125% 或 150% 缩放截图拿到的是物理像素而鼠标 API 用的是逻辑像素两者差一个缩放系数。解决在流程开头读取系统 DPI 缩放比例把所有坐标乘以这个系数或者直接在程序清单里声明 DPI 感知让截图和鼠标 API 统一到物理像素。4.2 现象找图一直失败手动截图看明明一模一样原因模板图是从缩放后的界面截的而实际运行时界面缩放变了或者模板图带了鼠标指针、焦点框等动态元素。解决模板图必须在目标程序稳定状态下截取且截取时鼠标移开如果界面会缩放准备多套模板图按分辨率切换或者改用特征点匹配。4.3 现象键盘输入丢字长文本只输入了前几个字符原因输入速度超过了目标程序的处理能力尤其是网页表单和 Electron 应用。解决在每次按键后加 20-50ms 延时或者改用剪贴板粘贴方案——先把文本写入剪贴板再模拟 CtrlV速度最快且不丢字。剪贴板方案要注意粘贴前清空剪贴板避免旧内容干扰。4.4 现象流程跑一半卡死GUI 无响应原因死循环没有退出条件或者某个节点在等待一个永远不会出现的图像。解决给每个循环节点设最大迭代次数给每个识别节点设超时时间超时后走异常分支而不是原地等待。Automation Operation 2.60 这类工具一般有「超时」参数默认可能是无限务必手动改成合理值比如 10 秒。4.5 现象目标程序以管理员权限运行自动化完全失效原因Windows UIPI 机制拦截了低完整性进程的输入注入。解决把自动化工具本身也以管理员权限启动两者完整性级别一致即可通信。注意不要用「以管理员身份运行」去启动一个不需要管理员权限的目标程序那样反而会引入其他权限问题。5. 进阶技巧用图像识别做状态校验与流程分支前面讲的都是「找到就点」但真实流程往往需要「根据当前状态决定下一步」。这时候图像识别就从定位工具升级成状态判断工具。具体做法是在关键节点后加一个「找图」节点找的是某个状态标识比如「已完成」的绿色对勾、「加载中」的转圈图标根据找到与否走不同分支。这比固定延时靠谱得多因为延时是玄学网络快慢、机器性能都会影响实际等待时间而状态校验是确定性的。一个实用技巧是「反向校验」不找「成功」标识而是找「失败」标识找到就重试或告警找不到就默认成功继续。这样能覆盖大部分异常场景且模板图只需要维护失败状态的几张维护成本低。另一个技巧是「区域轮询」对同一个区域每隔 200ms 截一次图做匹配连续 3 次命中才认为状态稳定避免界面动画导致的误判。验证流程是否可靠我一般会跑三组测试正常流程连跑 50 次看成功率异常流程手动制造断网、弹窗看是否能正确捕获并恢复边界流程最小分辨率、最大字体看识别是否仍然稳定。三组都过才敢放到生产环境。这套习惯是被血泪经验逼出来的——早期我跳过异常测试直接上线结果一个偶发弹窗让整批任务卡了半小时从那以后异常分支的优先级永远排在功能开发前面。希望帮到你。本文还有配套的精品资源点击获取