一种基于RPA实现智能录制的方法与流程

文档序号:32029362发布日期:2022-11-03 01:05阅读:290来源:国知局
一种基于rpa实现智能录制的方法
技术领域
1.本发明涉及rpa技术领域,具体涉及一种基于rpa实现智能录制的方法。


背景技术:

2.rpa的全称为机器人流程自动化(robotic process automation),主要的功能就是将工作信息与业务交互通过机器人来按照自先设计的流程去执行,对于一些大量重复的、有一定逻辑规则的流程都可以用rpa来处理。目前市面上大部分的rpa产品指令繁多,且搭建一个简单的网页搜索自动化流程过于繁琐,对于一个刚接触的小白用户,完成一个常规的自动化流程门槛较高。


技术实现要素:

3.本发明的目的在于,提供一种基于rpa实现智能录制的方法。本发明可以降低rpa指令集的搭建难度与使用门槛,能够实现指令的快速的搭建,省去繁琐的拖拽和捕获元素的过程。
4.为解决上述技术问题,本发明提供的技术方案如下:一种基于rpa实现智能录制的方法,通过监控并跟随鼠标及键盘两个输入端在操作页面上的操作过程,由rpa机器人处理鼠标和键盘的监控消息,实现对键盘按键和鼠标消息的指令录制;所述键盘操作的监控通过键盘监控器负责监听键盘按键;所述键盘监控器内部设有键盘钩子,键盘钩子中设置键盘钩子回调函数,当有键盘按下时,触发键盘钩子回调函数来处理按键消息;
5.所述鼠标的监控通过鼠标监控器负责监听鼠标消息;所述鼠标监控器内设有鼠标钩子,鼠标钩子中设置有鼠标钩子回调函数;当有鼠标操作时,触发鼠标钩子回调函数来处理鼠标消息;
6.所述监控消息的处理是将按键消息和鼠标消息添加到全局消息队列中,然后rpa机器人启动线程,监控全局消息队列,并从全局消息队列里获取一条消息进行处理,将其转换为指令。
7.上述的基于rpa实现智能录制的方法,所述键盘钩子回调函数为hookfunc,设置方法是接收一个int类型的结构体,通过消息响应机制判断消息类型是否是按下键或者松开键,并获取到按下的虚拟按键值;
8.键盘钩子回调函数处理按键消息是通过注册windows api来获取消息,然后利用当前应用程序所在路径及环境变量方法获取到进程模块,再通过setwindowshookex方法获取到返回的句柄,使当前进程模块能够监视到winddows的wh_ketboard_ll消息,当有键盘按下时,触发键盘钩子回调函数来处理按键消息,并向全局消息队列发送。
9.前述的基于rpa实现智能录制的方法,所述鼠标消息包括鼠标移动、鼠标滚轮、双击、按下中间按钮、松开中间按钮、按下鼠标右键、松开鼠标右键、按下鼠标左键和松开鼠标左键。
10.前述的基于rpa实现智能录制的方法,所述鼠标钩子回调函数为hookfunc,设置方
法是接收一个int类型的结构体,通过消息响应机制判断鼠标消息类型;
11.鼠标钩子回调函数处理鼠标消息是通过注册windows api来获取消息,然后利用当前应用程序所在路径及环境变量方法获取到进程模块,再通过setwindowshookex方法获取到返回的句柄,使当前进程模块能够监视到winddows的windows_hook_id.wh_mouse_ll消息,当有鼠标操作时,触发鼠标钩子回调函数来处理鼠标消息,并向全局消息队列发送。
12.前述的基于rpa实现智能录制的方法,在对监控消息的处理时,当消息类型为鼠标消息,且按下鼠标的左键、右键、中间键中的任意一个时,冻结键盘观察者的字符和热键输入序列,将捕获的按键信息添加到rpa机器人的指令列表,紧接着获取鼠标点击的坐标,通过函数获取窗口句柄,通过找出某个窗口的创建者方法传入窗口句柄拿到进程的id,如果当前进程是为rpa机器人,则不做处理,如果是其他进程,则解析本次点击的动作:当按下鼠标的左键、右键、中间键中的任意一个时,获取点击的坐标,调用uia探测进程,捕获点击位置的元素信息,再将刚才捕获的元素添加到指令列表。
13.前述的基于rpa实现智能录制的方法,在对监控消息的处理时,当消息类型为按键消息,对消息进行解析,若按键为ctrl、alt、win且为按下键时,清空字符输入序列,调用uia探测进程,将热键输入元素填充为捕获到的元素;
14.若热键序列为空且为松开时,则清除字符序列,将捕获的按键信息添加指令列表,将none键添加到热键序列,将捕获的按键信息添加指令列表并清除热键序列;
15.若热键序列不为空且为松开按键时,将捕获的按键信息添加指令列表,表示为常规的按键。
16.与现有技术相比,本发明简化流程的搭建过程,对于一系列的流程操作,通过智能录制,能够快速的搭建,省去繁琐的拖拽和捕获元素的过程;本发明的智能录制是通过对键盘操作和鼠标消息设置监控,采用更加便捷的程序方便使得键盘操作和鼠标消息更加容易的受到监控捕捉,也便于rpa机器人处理鼠标和键盘的监控消息。此外本发明相对于其他rpa繁琐的指令集,能够让用户更专注于流程逻辑的梳理,不用将精力花费在指令的寻找和搭配使用。本发明可以更快的搭建ui操作流程,降低开发门槛,智能录制能够识别人工的鼠标键盘操作,并自动转换成rpa机器人的指令,将原本繁琐的拖拽捕获的流程,能够一口气在网页中直接操作生成。
具体实施方式
17.下面结合实施例对本发明作进一步的说明,但并不作为对本发明限制的依据。
18.实施例:一种基于rpa实现智能录制的方法,包括rpa机器人,该rpa机器人为影刀机器人,可通过网页下载安装,所述rpa机器人由指令集,流程设计器,结果调试器,流程管理器,全局变量管理器以及工具栏组成。
19.指令集:用于存放管理rpa指令,用户可以选择需要的指令通过双击或者拖拽的方式添加到流程设计器,进行自由设计。
20.流程设计器:为用户提供可视化rpa流程编辑平台。
21.结果调试器:用于显示程序错误信息,日志信息以及其他调试数据。
22.流程管理器:管理rpa流程以及python脚本等流程文件。
23.全局变量管理器:管理全局变量。
24.工具栏:包含了流程编排、调试功能和智能录制等功能。
25.本实施例中,利用影刀rpa机器人进行智能录制,即通过监控并跟随鼠标及键盘两个输入端在操作页面上的操作过程,由rpa机器人处理鼠标和键盘的监控消息,实现对键盘按键和鼠标消息的指令录制;
26.在录制模式下,鼠标悬停在某处0.5秒,会出现菜单图标,用户可以根据需要在菜单图标选择操作,具体操作可以参见表1:
27.菜单选项说明获取元素信息获取元素的文本内容、网页源代码、属性等获取相似元素信息用于获取一组元素的信息输入向输入框类型的元素输入内容鼠标移动到这里鼠标会悬停到指定位置或者指定元素上点击鼠标点击,支持单击、双击和右键点击勾选复选框元素可用,支持勾选、取消勾选和反选选择下拉框下拉框元素可用,悬停在想选择的选项点击并处理弹框点击后出现上传或下载网页对话框时可用等待元素等待指定元素出现或消失截图给指定元素截图保存
28.表1
29.实施例中,所述键盘操作的监控通过键盘监控器(keyboardmonitor类)负责监听键盘按键;所述键盘监控器内部设有键盘钩子(keyboardhook钩子类),键盘钩子中设置键盘钩子回调函数,当有键盘按下时,触发键盘钩子回调函数来处理按键消息;
30.具体的,keyboardmonitor类负责监听键盘按键,内部组合keyboardhook钩子类,keyboardhook内部组合了一个hhook类,在程序启动的时候设置键盘钩子回调函数,监听键盘的按键,实现逻辑如下:
31.(1)设置一个键盘钩子回调函数:hookfunc,设置方法是接收一个int类型的ncode,wparam和lparam类型的结构体(wparam和lparam为消息响应机制),通过wparam消息判断消息类型是否是按下键(keydown)或者松开键(keyup),通过lparam消息获取到按下的虚拟按键(虚拟按键由系统定义,每一个按键会对应一个标准的16进制表示方法,可通过http://www.pinvoke.net/default.aspx/enums/vk.html查看c#表示方式)值。
32.(2)编写好键盘钩子回调函数以后,接下来注册windows api来获取消息。通过当前应用程序所在路径及环境变量(process.getcurrentprocess().mainmodule)方法获取到进程模块(processmodule),通过user32动态库提供的setwindowshookex方法,获取到返回的句柄,使当前进程模块能够监视到winddows的wh_ketboard_ll消息,当有键盘按下时,会触发设置的键盘钩子回调函数来处理按键消息,并向上层订阅端触发事件,使得按键消息向全局消息队列发送。
33.所述鼠标的监控通过鼠标监控器负责监听鼠标消息;所述鼠标监控器内设有鼠标钩子,鼠标钩子中设置有鼠标钩子回调函数;当有鼠标操作时,触发鼠标钩子回调函数来处理鼠标消息;所述鼠标消息包括鼠标移动、鼠标滚轮、双击、按下中间按钮、松开中间按钮、按下鼠标右键、松开鼠标右键、按下鼠标左键和松开鼠标左键。
34.具体的,鼠标监控器(mousemonitor类)负责监听鼠标事件,内部组合鼠标钩子(mousehook钩子类),mousehook内部组合hhook类,在程序启动的时候设置鼠标钩子回调函数,监听鼠标相关事件,实现逻辑如下:
35.(1)设置一个鼠标钩子回调函数:hookfunc,设置方法是接收一个int类型的结构体ncode,wparam和lparam类型的结构体,通过wparam判断判断鼠标消息类型,触发对应事件;
36.(2)编写好鼠标钩子回调函数以后,接下来注册windows api来获取消息。通过当前应用程序所在路径及环境变量(process.getcurrentprocess().mainmodule)方法获取到进程模块(processmodule),通过user32动态库提供的setwindowshookex方法,获取到返回的句柄,使当前进程模块能够监视到winddows的wh_ketboard_ll消息,当有鼠标操作时,触发鼠标钩子回调函数来处理鼠标消息,并向上层订阅端触发事件,使得按键消息向全局消息队列发送。
37.所述监控消息的处理是将按键消息和鼠标消息添加到全局消息队列中,然后rpa机器人启动线程,监控全局消息队列,并从全局消息队列里获取一条消息进行处理,将其转换为指令。
38.具体地,所述全局消息队列为消息源,全局消息队列blockingcollection《inputmessage》是一个system.collections.concurrent库提供的线程安全的集合,输入消息模块(inputmessage)是存放的消息,包括消息类型(鼠标或者键盘)和消息数据。当开始录制时,会监听鼠标和键盘的相关事件,当接收到按键消息和鼠标消息的事件通知时,便会添加到该全局消息队列中。
39.消息处理:任务运行模块(task.run)启动一个线程,监控消息源队列,智能录制模式会有三个状态:闲置(idle)、运行(running)、暂停(pause),当智能录制模式的状态(status)不是idle时,会从全局消息队列里获取一条消息,当开启录制模式时,会将status置为running,开启处理,实现逻辑如下:
40.(1)将status置为pause;
41.(2)当消息类型为鼠标事件,且按下鼠标的左键、右键、中间键中的任意一个时,冻结键盘观察者(keyboardwatcher)的字符和热键输入序列,将捕获的按键信息添加rpa机器人的指令(actionboard)列表,紧接着获取鼠标点击的坐标,通过user32库的函数windowfrompoint获取窗口句柄,通过找出某个窗口的创建者(getwindowthreadprocessid)方法传入窗口句柄拿到进程的id,如果当前进程是影刀pra机器人,则不做处理,如果是其他进程,则调用鼠标观察者(mousewatcher)的记录(record)方法解析本次点击的动作:当按下鼠标的左键、右键、中间键中的任意一个时,获取点击的坐标,调用uia探测进程,捕获点击位置的元素信息(包括文本、大小、类名等)。
42.此时响应的是鼠标的按下(down)事件,紧接着松开鼠标,响应鼠标的松开(up)事件(down和up一般是成对存在的),将刚才捕获的元素添加指令列表;
43.(3)若消息类型是按键消息,则调用鼠标观察者(mousewatcher)的记录(record)解析本次按键动作:
44.a、若按键为ctrl、alt、win且为按下键(keydown)时,清空字符输入序列,调用uia探测进程,将热键输入元素(hotkeyinput.element)填充为捕获到的元素;
45.b、若热键序列为空且为松开(up)时,则清除字符序列,将捕获的按键信息添加指令列表,将空(none)键添加到热键序列将捕获的按键信息添加指令列表并清除热键序列,该操作即可读取用户按下的常用组合按键,比如ctrl+s(保存)等;
46.c、若热键序列不为空且松开(up)按键时,将捕获的按键信息添加指令列表,即为一次常规的按键;
47.(4)模拟输入的消息,调用user32库提供的发送输入(sendinput方法)来模拟发送;
48.(5)将status置为running,继续处理下一条队列消息,直至全局消息队列中的消息处理完毕。
49.综上所述,本发明简化流程的搭建过程,对于一系列的流程操作,通过智能录制,能够快速的搭建,省去繁琐的拖拽和捕获元素的过程;本发明的智能录制是通过对键盘操作和鼠标消息设置监控,采用更加便捷的程序方便使得键盘操作和鼠标消息更加容易的受到监控捕捉,也便于rpa机器人处理鼠标和键盘的监控消息。此外本发明相对于其他rpa繁琐的指令集,能够让用户更专注于流程逻辑的梳理,不用将精力花费在指令的寻找和搭配使用。本发明可以更快的搭建ui操作流程,降低开发门槛,智能录制能够识别人工的鼠标键盘操作,并自动转换成rpa机器人的指令,将原本繁琐的拖拽捕获的流程,能够一口气在网页中直接操作生成。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1