RPA产品实现自动化从类型上大致可以分为桌面应用/浏览器应用/其它(Mainframe/Java等),本文将分析RPA或者自动化类工具实现桌面应用自动化的原理。
不管使用什么技术来执行自动化至少都得包含如下几个要素:
找
找元素、控件、输入框、等等想找的内容
读
读取文本,状态,位置,是否勾选等等
控
单击、双击、输入内容、下拉等操作属于控制的范畴
Win32API:
Windows API是微软在Windows操作系统中提供的一套核心应用程序编程接口(API)。
Windows API (Win32)主要关注于编程语言C,因为其公开的函数和数据结构在其文档的最新版本中都是用该语言描述的。但是,任何能够处理低级数据结构以及为调用和回调指定的调用约定的编程语言编译器或汇编程序都可以使用该API。类似地,API函数的内部实现历史上是用几种语言开发的。尽管C语言不是面向对象的编程语言,但Windows API和Windows在历史上都被描述为面向对象的。还有许多面向对象语言的包装器类和扩展,它们使这个面向对象的结构更加显式(Microsoft Foundation Class Library (MFC)、Visual Component Library (VCL)、GDI+等)。例如,Windows 8提供了Windows API和WinRT API,这些API是用c++实现的,设计上是面向对象的。
无论是MFC,VCL还是VB6,Win32 SDK 都是其根本,最终打交道的其实都是HWND和Windows Message。
【本文以Windows 10 ,系统自带 calc.exe(计算器程序举例)】
Spy++获取的信息非常有限(官网可下载)
使用最新框架开发计算器应用,Spy++ 仅仅可以识别计算器窗体最基础的名称,位置,HWND等信息,无法识别更细节的每一个按钮,Win32API无法完全自动化这类应用。
Spy++获取的有用信息很少,查找信息麻烦
Spy++工具提取了上百个各类窗体信息,导致查找效率低,比较适合一些较老的应用,在与MSAA和UIA搭配使用时可以获得不错的效果。
Win32API可以操作底层的OS接口,用来处理模拟键盘鼠标,特殊的一些窗体时有奇效。
BluePrism Win Mode获取的信息与Spy++一致
BluePrism可以手动切换Win32/AA/UIA的拾取方式。
基于Win32API有一款非常知名的自动化工具 AutoIT
AutoIt v3是一种类似于Basic的免费软件脚本语言,用于自动化Windows GUI和通用脚本。它使用模拟击键、鼠标移动和窗口/控制操作的组合,