欢迎光临
我们一直在努力

影刀RPA实操指南:Windows桌面窗口操作与图像识别自动化

影刀RPA实操指南:Windows桌面窗口操作与图像识别自动化

不是所有自动化场景都在浏览器里。企业ERP系统、本地客户端软件、游戏脚本——这些桌面应用程序没有HTML DOM,也没有CSS选择器。控制桌面应用,全靠窗口操作指令和图像识别技术。

影刀RPA的桌面自动化模块独立于浏览器自动化,专门对付Windows原生窗口。它通过Windows API获取窗口句柄来操控程序,用图像匹配来定位按钮和控件——这是所有桌面自动化的底层逻辑。

我也是从浏览器自动化转到桌面自动化的,发现思路要完全转换:浏览器是对DOM元素操作,桌面是对像素操作,看似相似,底层完全不同。 在这里插入图片描述

窗口操作:桌面自动化的入口

桌面自动化的第一步永远是找到正确的窗口。影刀RPA的窗口操作指令在左侧面板的「桌面操作」分类下。

窗口定位与激活

定位窗口有三种方式,精度从低到高:

  • 按标题匹配:用「激活窗口」指令,窗口标题填完整名称或部分名称(支持通配符)。这是最简单的定位方式,但如果多个窗口标题相同(如多个Excel文件)就会匹配错。

  • 按进程名匹配:用「按进程名激活窗口」指令。比如ERP软件是 erp.exe,这个比标题匹配更精确,因为进程名是唯一的。

  • 按类名匹配:高级方式,用Windows窗口类名定位。用影刀的「窗口信息探测」工具(在顶部工具栏中)可以查看目标的窗口类名。

  • # 影刀窗口操作的常用配置示例

    # 方式一:按标题匹配(支持模糊匹配)
    窗口标题: "用友*" # 匹配所有以"用友"开头的窗口
    窗口标题: "*Excel*" # 匹配所有包含"Excel"的窗口

    # 方式二:按进程名匹配
    进程名: "EXCEL.EXE" # 精确匹配Excel进程
    ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b9ee481295474f8a89f6345e30b36dca.png#pic_center)

    进程名: "notepad.exe" # 匹配记事本

    # 方式三:按类名匹配
    窗口类名: "XLMAIN" # Excel主窗口的类名
    窗口类名: "Notepad" # 记事本的类名

    窗口状态管理

    激活窗口只是第一步,窗口可能处于最小化、隐藏或被遮挡状态。

  • 用「获取窗口状态」指令检查窗口当前状态。
  • 如窗口已最小化 → 用「恢复窗口」指令还原。
  • 如窗口被遮挡 → 用「窗口置顶」指令强制置顶到最前。
  • 拼多多店群自动化报活动上架!

  • 如果窗口不存在 → 用「运行程序」指令启动目标程序。
  • 这里很容易踩坑:远程桌面断开后,窗口会进入"无桌面会话"状态。此时影刀的窗口操作会失效——窗口虽然存在但不在任何屏幕上。解决方案:保持远程桌面连接,或者使用VNC等不依赖桌面会话的远程方案。 在这里插入图片描述

    图像识别:在像素里找按钮

    浏览器自动化用XPath找元素,桌面自动化用图像匹配找控件。影刀的图像识别指令在「图像操作」分类下。

    图像匹配的基本流程

  • 先用截图工具截取目标按钮/控件的一小块图片(称为"模板图"或"靶标")。
  • 保存为PNG文件,要求清晰、尺寸适中(不要太大)。
  • 在流程中拖入「查找图片」指令。
  • 指定模板图的文件路径。
  • 设置查找区域(全屏或指定窗口)。
  • 设置匹配精度(0.7-1.0,建议从0.8开始调)。
  • 查找到后返回坐标,用「鼠标点击」指令点击该坐标。
  • 图像匹配的精度控制

    匹配精度直接影响找到的概率和准确性:

    在这里插入图片描述

    精度值适用场景说明
    0.95-1.0 固定分辨率、固定DPI的控件 极高精度,但稍有差异就找不到
    0.85-0.94 普通桌面应用按钮 推荐值,容忍一定像素差异
    0.75-0.84 动态内容、游戏界面 宽松匹配,但可能误匹配
    0.70以下 不建议使用 误匹配概率高

    推荐一个方法,实测好用:先用0.8的精度尝试,如果找得到就用——越低越不容易因像素差异而漏掉。如果误匹配了其他区域,再把精度调高到0.9。

    图像匹配失败的处理

    桌面应用的按钮可能在每次打开时位置不同,或者因界面缩放导致模板图不匹配。

  • 在「查找图片」指令后加「条件判断」:检查返回的坐标是否为(-1,-1)(表示未找到)。
  • 如果未找到,尝试扩大查找区域或降低匹配精度。
  • 如果还是找不到,用「区域截图」截取屏幕,人工检查是否与模板图一致。
  • 在这里插入图片描述
  • # 影刀Python节点:多精度搜索图片
    # 从低精度到高精度依次尝试,找到后返回坐标
    import subprocess

    template_path = get_variable("template_image")
    search_area = get_variable("search_area") # 格式:"0,0,1920,1080"

    # 精度从低到高尝试
    for threshold in [0.7, 0.75, 0.8, 0.85, 0.9, 0.95]:
    # 使用影刀内置的图像匹配(通过变量传递结果)
    pass # 此处为示意,实际使用影刀的「查找图片」指令循环

    鼠标和键盘模拟

    找到控件位置后,需要模拟鼠标点击和键盘输入。

    鼠标操作

  • 「鼠标移动」指令:先移动到目标坐标,视觉上能看到鼠标移到按钮上。
  • 「鼠标点击」指令:在当前位置执行点击。建议每次点击前先移动鼠标,更接近真人行为。
  • 「鼠标双击」指令:用于需要双击的场景(如打开文件)。
  • 移动和点击之间加200-500ms间隔,不要瞬间点击——有些应用的按钮需要悬停后才激活。
  • 键盘输入

    在这里插入图片描述

    影刀的「模拟按键」指令可以向目标窗口发送键盘事件:

  • 先用「激活窗口」让目标窗口获得焦点。
  • 拖入「模拟按键」指令,选择按键或输入文本。
  • 组合键使用 Ctrl+C、Alt+Tab 等格式。
  • 中文输入用影刀的「输入文本」指令(通过剪贴板中转),不要用模拟按键。
  • 实际应用:用友ERP自动录入凭证

    以用友ERP为例,展示桌面自动化的完整实战流程。

    场景分析

    在这里插入图片描述

    用友ERP是典型的Windows客户端,没有API接口,纯靠界面操作。需要批量录入上百条会计凭证,手动操作耗时且易出错。

    TEMU店群矩阵自动化运营核价报活动

    流程设计

  • 用「运行程序」指令启动用友ERP。
  • 用「激活窗口」等待窗口出现,窗口标题填"用友*"。
  • 用「查找图片」找到"新增凭证"按钮,点击进入录入界面。
  • 用「查找图片」定位每个输入框(摘要、科目、借方金额、贷方金额)。
  • 从Excel中逐行读取凭证数据。
  • 用「模拟按键」输入各项数据,Tab键切换输入框。
  • 录入完成后,用「查找图片」找到"保存"按钮。
  • 循环处理所有凭证行。
  • # 影刀Python节点:读取Excel凭证数据并返回列表
    import json

    # 从影刀变量获取Excel数据(假设已通过影刀指令读取)
    excel_data = get_variable("voucher_data")
    rows = json.loads(excel_data)

    # 按字段整理为凭证格式
    vouchers = []
    for row in rows:
    voucher = {
    "摘要": row.get("summary", ""),
    ![在这里插入图片描述](https://i–blog.csdnimg.cn/direct/2c23de6ebba6470793b825853c85c322.png#pic_center)

    "科目代码": row.get("account_code", ""),
    "借方金额": row.get("debit", 0),
    "贷方金额": row.get("credit", 0),
    "日期": row.get("date", "")
    }
    vouchers.append(voucher)

    set_variable("voucher_list", json.dumps(vouchers, ensure_ascii=False))
    set_variable("voucher_count", len(vouchers))

    异常处理

    桌面应用的稳定性比浏览器差很多,窗口可能意外关闭或弹出模态对话框。

  • 每个操作步骤前后都用「查找图片」做状态检查。
  • 如果检测到错误弹窗,用「查找图片」找"确定"按钮自动关闭弹窗。
  • 流程中用try-catch-finally机制保护,catch块记录出错位置,finally块保存已录入的数据。
  • 常见问题/易错速查

    问题1:图像匹配总是失败 模板图与实际运行时分辨率不一致。确保制作模板图的电脑和运行流程的电脑有相同的显示缩放比例(100%最佳)。如果用远程桌面,分辨率会变化导致匹配失败。

    问题2:模拟点击后没有反应 目标窗口没有获得焦点。每次点击前用「激活窗口」指令确保窗口在最前面。另外有些应用有UAC保护,影刀的自动化操作可能被拦截,需要用管理员权限运行影刀。 在这里插入图片描述

    问题3:查找图片的速度很慢 查找区域太大。将查找区域限制在实际可能的范围内(如只搜索目标窗口区域,而不是全屏)。影刀的「查找图片」指令支持指定窗口范围查找,比全屏快很多。

    问题4:不同电脑上同一流程跑不动 显示缩放比例、分辨率、系统主题不同导致界面像素不一致。做桌面自动化流程的电脑和运行电脑要统一显示设置。如果做不到统一,用影刀的「流程参数」功能把模板图路径设为参数,不同电脑用不同的模板图。

    推荐资源

    • 影刀官方文档:桌面操作→窗口操作与图像识别的完整参数说明
    • 截图工具Snipaste:制作模板图的好帮手,支持像素级精准截图
    • Windows Spy++工具:查看窗口类名、句柄等底层信息(包含在Visual Studio中)

    作者:林焱 本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

    内容标签:#影刀RPA #Windows桌面 #窗口操作 #图像识别 #桌面自动化 #ERP #模拟按键 在这里插入图片描述

    赞(0)
    未经允许不得转载:171主机测评 » 影刀RPA实操指南:Windows桌面窗口操作与图像识别自动化
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址