文档备案控制台
免费开始使用

影刀RPA零基础教程:Windows桌面自动化与图像识别完整指南——从窗口管理到微信实战

做电商运营,除了网页和手机,还有很多操作是在Windows桌面上完成的——ERP系统下单、微信回复客户、钉钉审批、企业微信发送报表、用老旧的进销存软件导出数据……

网页自动化有XPath、有元素库,手机自动化有ADB、有UI树。Windows桌面自动化呢?靠的是窗口管理、图像识别、键盘模拟。

我也是非技术出身,刚开始做桌面自动化的时候完全不知道怎么下手——没有元素可以捕获,没有XPath可以写,只能对着屏幕截图,让机器人“看图操作”。说实话,比网页自动化难上手,但学会了之后能解决的问题也多得多。今天就把Windows桌面自动化的完整方案讲一遍。

桌面自动化 vs 网页自动化:本质区别

网页自动化操作的是浏览器的DOM树,有结构化的元素可以定位。桌面自动化操作的是Windows窗口的像素,没有DOM,没有XPath。

picture.image

对比项网页自动化Windows桌面自动化
定位依据XPath、CSS选择器、元素属性窗口句柄、图像识别、坐标

picture.image | 稳定性 | 相对稳定(页面结构变化时需调整) | 较差(分辨率、缩放、主题都会影响) | | 核心指令 | 捕获元素、获取相似元素列表 | 获取窗口对象、点击图像、OCR识别 | | 适用场景 | Web应用 | 桌面软件、老旧系统、ERP |

一句话总结:网页自动化靠“找元素”,桌面自动化靠“看图”和“找窗口”。

picture.image

窗口管理:桌面自动化的第一步

所有桌面操作都依赖一个前提——知道操作哪个窗口。影刀RPA通过“窗口对象”来标识一个窗口。

picture.image

获取窗口对象的三种方式

在右侧指令面板搜索“获取窗口对象”,有以下几种获取方式:

方式一:按窗口标题捕获

picture.image

最常用。打开目标软件(比如微信、钉钉、记事本),点击“捕获窗口”按钮,鼠标移到窗口上出现橙色边框后点击确认。影刀会记录窗口的标题和类名。

# 捕获窗口:微信(窗口标题为“微信”)

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/475852254cb742a5880926080b36c58e~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782866084&x-signature=oFmRKuDluJvL54QPP%2BoShvpRLxY%3D)
获取窗口对象:
    匹配方式 = “标题”
    窗口标题 = “微信”
    返回结果 → $微信窗口

picture.image

方式二:按窗口类名捕获

有些窗口标题会变化(比如“商品管理 - 12345”里面的数字每次不同),用类名更稳定。类名可以通过Windows自带的“** Spy++**”工具查看。

方式三:获取当前激活窗口

如果窗口已经在前台,直接用“获取当前激活窗口”指令,不需要捕获。

# 获取当前激活的窗口(用户正在操作的窗口)
获取当前激活窗口 → $当前窗口

一个容易被忽略的点:窗口对象获取后,如果窗口被关闭或最小化,对象就失效了。所以每次操作前最好重新获取一次窗口对象,尤其是流程较长的时候。

激活窗口:把目标窗口拉到前台

获取窗口对象后,用“激活窗口”指令把它切换到前台。如果不激活,后面的点击、输入可能会操作到错误的窗口

# 把微信窗口切到前台
激活窗口:$微信窗口

窗口大小和位置调整

如果图像识别需要在固定区域找图,建议先统一窗口大小和位置。

picture.image

# 设置窗口位置和大小
设置窗口位置:$微信窗口,X=0,Y=0
设置窗口大小:$微信窗口,宽度=1200,高度=800

为什么这个很重要:同样的图像,在1200×800的窗口里和在最大化窗口里,位置完全不同。固定窗口尺寸能大幅提升图像识别的稳定性

图像识别:桌面自动化的核心武器

当元素无法捕获时,图像识别是最后的保障。原理很简单:你提前截一张图作为“模板”,运行时机器人在屏幕上找跟这张图一样的地方,找到了就点那里。

点击图像指令

在右侧指令面板搜索“点击图像”或“点击图像(win) ”,拖入流程。

操作步骤

  1. 点击“捕获图像”按钮
  2. 在目标软件界面上框选你要点击的区域(比如微信的“发送”按钮)
  3. 保存为图像模板
  4. 运行时机器人在屏幕上找这个图像,找到了就点击
# 点击微信的“发送”按钮
点击图像:
    图像模板 = “微信_发送按钮.png”
    匹配精度 = 0.8  # 0.8=80%相似度就算匹配
    点击位置 = “中心点”
    
![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/b0ce62730662405791d6300f921cfe4f~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782866084&x-signature=CEWlj6SfRmeLEk7%2BI%2BIeSvLWa3c%3D)

picture.image 匹配精度这个参数很关键:设太高(比如0.95)可能找不到(因为屏幕缩放、颜色细微差异),设太低(比如0.6)可能点错地方。我一般设0.8,大部分场景够用。

等待图像出现

在点击之前,最好先用“等待图像”指令确保目标出现了。尤其是有弹窗、加载动画的场景。

# 等待“发送成功”提示出现
等待图像:
    图像模板 = “发送成功提示.png”
    超时时间 = 10秒
    匹配精度 = 0.8
# 超时没出现就报错

在指定区域内找图

如果屏幕上有很多相似图片(比如Excel表格里多个相同的图标),需要在指定区域内找图,而不是全屏搜索。

操作步骤:

  1. 先用“获取窗口对象”锁定目标窗口
  2. 在“点击图像”指令的高级设置中,勾选“查找范围”,选择“指定窗口”或“指定区域
  3. 框定搜索范围,减少误匹配

跨设备图像识别失效的解决方案

这是桌面自动化最大的坑——在自己电脑上跑得好好的流程,换一台电脑就找不到图了。

根本原因:不是“屏幕大小”本身的问题,而是分辨率差异 + 系统缩放比例的组合效应。比如你在1920×1080、缩放100%的电脑上截的图,拿到2560×1440、缩放150%的电脑上,图像大小和位置都变了。

解决方案:双维度校准

核心逻辑是计算两个比例:

  • 分辨率比例:当前设备真实分辨率 ÷ 开发设备真实分辨率
  • 缩放比例:当前设备真实分辨率 ÷ 当前设备缩放后分辨率

然后用最终适配比例 = 分辨率比例 × 缩放比例来调整图像和坐标。

实操方法:在流程里加一段Python脚本,自动获取当前设备的分辨率和缩放比例,动态调整图像模板的匹配参数。

# 获取当前设备的真实分辨率和缩放后分辨率
import win32api, win32con, win32gui, win32print
import tkinter as tk

# 真实分辨率(不受缩放影响)
hdc = win32gui.GetDC(0)
real_w = win32print.GetDeviceCaps(hdc, win32con.DESKTOPHORZRES)
real_h = win32print.GetDeviceCaps(hdc, win32con.DESKTOPVERTRES)

# 缩放后分辨率(系统显示的逻辑像素)
root = tk.Tk()
scaled_w = root.winfo_screenwidth()
scaled_h = root.winfo_screenheight()

有了这两个数据,就能计算出适配比例,动态调整图像匹配的坐标。

OCR文字识别:把图片里的文字读出来

有些场景下,图像识别不够用——你要的是文字内容,而不是点击某个位置。比如识别验证码、提取截图里的订单号、读取老系统里的数据报表。

影刀的OCR(光学字符识别)有几种实现方式:

方式一:内置OCR(免费,准确率一般)

在右侧指令面板搜索“OCR文字识别”,拖入流程。

OCR文字识别:
    识别引擎 = “内置OCR”
    识别语言 = “中英混合”
    图片来源 = “截图变量”  # 先截图再识别
    返回结果 → $识别文字

内置OCR免费,但对中文识别准确率大概80%-90%,字体小或背景复杂时准确率会下降。

方式二:第三方OCR(付费,准确率高)

配置百度OCR或腾讯OCR的API Key,识别准确率可以达到95%以上。

OCR文字识别:
    识别引擎 = “百度OCR”
    API Key = “你的API Key”
    Secret Key = “你的Secret Key”
    识别语言 = “中英混合”
    图片来源 = “截图变量”
    返回结果 → $识别文字

百度/腾讯OCR每天有免费额度,低频使用基本不用花钱。

方式三:魔法指令生成OCR代码(免费,灵活)

影刀的“魔法指令”可以自动生成OCR识别代码。你只需要输入“帮我把图片里的字都读出来”,它就能生成一段可运行的Python代码。

优点是免费、数据本地处理、不需要懂代码。对于日常办公中90%的图片文字提取需求,这个方法都能快速搞定。

方式四:鼠标悬停在文本上(OCR)

影刀有一个专门的指令叫“鼠标悬停在文本上(OCR)”——通过AI引擎识别屏幕上指定文本的位置,自动把鼠标移到文字中心点。

这个指令特别适合桌面软件里文本可见但元素不可捕获的场景。比如在某个老旧ERP系统里,你想把鼠标移到“确认”按钮的文字上,但捕获不到按钮元素——用这个指令就能搞定。

OCR文字定位+偏移点击(进阶)

这是桌面自动化里最实用也最容易被忽略的技巧。

核心逻辑:通过OCR识别界面上的文字,获取文字的坐标,然后根据文字与实际点击点的相对偏移量执行点击。

适用场景:目标元素有明确文字标识(如“确认”“删除”按钮),但元素本身不可捕获。

实现步骤

  1. 截取当前界面截图
  2. 用OCR识别文字及其坐标
  3. 筛选目标文字(比如“确认”)
  4. 计算偏移量(文字矩形中心向下偏移10px通常就是按钮中心)
  5. 执行点击

这个方法我在处理各种老旧ERP系统时屡试不爽——那些用VB6写的、连元素都捕获不到的软件,全靠OCR文字定位来操作。

模拟键盘与鼠标:最后的操作手段

当图像识别和OCR都搞不定的时候,还有最后一招——直接模拟键盘和鼠标

模拟键盘输入

在右侧指令面板搜索“键盘输入”或“发送按键”。

# 模拟键盘输入文本
键盘输入:内容 = “Hello World”

# 模拟快捷键(Ctrl+C复制)
键盘输入:内容 = “^c”  # ^表示Ctrl

# 模拟功能键
键盘输入:内容 = “{ENTER}”  # 回车
键盘输入:内容 = “{TAB}”    # Tab键

常用快捷键符号

  • ^ = Ctrl
  • + = Shift
  • % = Alt
  • {ENTER} = 回车
  • {TAB} = Tab
  • {DELETE} = Delete
  • {F1}-{F12} = 功能键

模拟鼠标操作

# 移动鼠标到指定坐标
移动鼠标:X=500,Y=300

# 左键点击
鼠标点击:按键=左键

# 右键点击
鼠标点击:按键=右键

# 滚轮滚动
鼠标滚轮:滚动行数=3

剪切板操作

桌面自动化里,剪切板比键盘输入更可靠——尤其输入中文长文本的时候。

# 复制选中内容到剪切板(Ctrl+C)
键盘输入:内容 = “^c”

# 获取剪切板内容
获取剪切板文本 → $剪切板内容

# 设置剪切板内容
设置剪切板文本:内容 = “要粘贴的文字”

# 粘贴(Ctrl+V)
键盘输入:内容 = “^v”

文本输入的一个坑:用“键盘输入”直接输入中文时,如果当前输入法不是中文,可能会输入英文或乱码。推荐做法:先用“设置剪切板文本”把内容放到剪切板,再用Ctrl+V粘贴

实战案例:微信自动发送消息

把以上所有技术串起来,做一个完整的实战案例——自动打开微信,给指定好友发送消息

# 1. 获取微信窗口对象
获取窗口对象:标题=“微信” → $微信窗口

# 2. 激活微信窗口(确保在前台)
激活窗口:$微信窗口

# 3. 点击“搜索”图标(图像识别)
点击图像:模板=“微信_搜索图标.png”,匹配精度=0.8

# 4. 等待搜索框出现
等待图像:模板=“微信_搜索框.png”,超时=5# 5. 输入好友昵称(剪切板方式)
设置剪切板文本:内容=“张三”
键盘输入:内容=“^v”  # Ctrl+V粘贴
等待:1# 6. 点击搜索到的好友(图像识别)
点击图像:模板=“微信_张三头像.png”,匹配精度=0.8

# 7. 等待聊天窗口打开
等待图像:模板=“微信_输入框.png”,超时=5# 8. 输入消息内容(剪切板方式)
设置剪切板文本:内容=“你好,这是自动发送的消息”
键盘输入:内容=“^v”

# 9. 点击“发送”按钮(图像识别)
点击图像:模板=“微信_发送按钮.png”,匹配精度=0.8

# 10. 等待发送成功
等待图像:模板=“微信_发送成功.png”,超时=3

注意:微信等社交软件对自动化操作有风控机制。批量发送时建议加随机延时(1-3秒),避免触发限制。

辅助按键技巧:解决“一点图像就消失”的问题

这是桌面自动化里很隐蔽但很常见的一个坑。

现象:在钉钉、企业微信、飞书等软件里,搜索框输入内容后,想点击搜索结果,一点击搜索结果搜索框就消失了,流程失败。

原因:搜索框处于激活状态时,点击其他非输入区域,系统判定为“失去焦点”,自动清空搜索状态。

解决方法:在“点击图像”或“点击元素(win)”指令的高级设置中,把“辅助按键”设置为Alt。这样点击时不会导致搜索框失去焦点。

这个方法适用于钉钉PC端、企业微信、飞书、Foxmail等PC端软件。

六个常见问题速查

问题现象根本原因修复方法
图像识别找不到图分辨率/缩放比例不同用双维度校准算法适配
窗口操作失效窗口句柄过期操作前重新获取窗口对象
点击图像导致搜索框消失焦点丢失辅助按键设为Alt
OCR识别中文不准内置OCR对中文支持弱改用百度/腾讯OCR或魔法指令
换电脑后所有图像都失效分辨率+缩放差异在目标设备上重新截图
键盘输入中文变乱码输入法不对用剪切板方式(Ctrl+V)代替键盘输入

推荐资源

  • 影刀官方帮助文档搜索“窗口对象”或“图像识别
  • 影刀社区搜索“桌面自动化”或“图像识别”,有大量踩坑分享
  • Chrome插件Spy++(Windows自带工具),用于查看窗口类名
  • 影刀B站官方账号搜索“桌面自动化”,有视频教程

#影刀RPA #RPA自动化 #桌面自动化 #图像识别 #OCR #Windows自动化

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。如果这篇文章对你有帮助,欢迎点赞收藏,下一篇我们聊“流程模板化与快速复用的完整方案”。

0
0
0
0
评论
未登录
暂无评论