UiPath-默认、SendWindowMessages和SimulateType(SimulateClick)三种鼠标键盘模拟行为
UiPath中,模拟鼠标和键盘支持3种模式:
Default、SendWindowMessages、SimulateType(SimulateClick)(SimulateType是输入,SimulateClick是点击)
Default模式:SendWindowMessages、SimulateType(SimulateClick)不选或都为false时
这三种有什么样的区别?
我们从原理和具体表现两个角度来区分他们。
原理:
这是官方文档上的图。
按照官方的说法,Default模式是基于系统驱动的方式,来模拟键盘和鼠标行为。是最接近真实的鼠标和键盘的方式。
SendWindowMessages模式,是通过向应用程序发送Window Message进行模拟的。是基于应用的方式。
SimulateType(SimulateClick)模式,是通过向UI元素发送消息进行模拟的。是基于UI元素的。
于是根据原理并官方文档我们可以得出下表:
类型 | 基于 | 兼容程度 | 响应速度 |
Default | 系统驱动(最接近真实鼠标键盘的方式) | 全部 | 慢 |
SendWindowMessages | 应用 | 大部分 | 中 |
SimulateType(SimulateClick) | UI元素 | 一部分 | 快 |
具体表现:
我们在桌面创建了txt,并在uipath中,创建3个Keyborad.TypeInfo活动。
第一个我们使用Default的模式,第二种我们选择SendWindowMessages模式,第三种我们使用SimulateType模式。
分别向这个txt文件输入文字。
然后我们启动程序,当这个程序在向这个txt文件输入文字时,我们尝试每次在输入前,把鼠标光标挪开到其他应用程序窗口。
我们会发现:
类型 | 光标 | 文字 |
Default | 本来在其他应用程序窗口的光标,会移动到txt文本框内。 | 文字是一个个打出的 |
SendWindowMessages | 在其他应用程序窗口的光标不会被移动 | 文字是一个个打出的 |
SimulateType | 在其他应用程序窗口的光标不会被移动 | 文字是瞬间出来的 |
总结:
根据上表的光标特性,当我们的机器人运行在有人工作的电脑上,我们是不能使用default模式的。
当然根据原理和具体表现的其他特征,我们还能推导出更多场景的适用方式。