UIA InvokePattern.Invoke()在系统被锁定时抛出异常.(在.net 4.5.2中)

本文关键字:net 抛出异常 Invoke InvokePattern 系统 UIA 锁定 定时 | 更新日期: 2023-09-27 18:10:57

调用Invoke()方法(来自system . windows . automation . invokepattern)在系统被锁定时失败。在将项目迁移到。net 4.5.2之后可以看到这种行为。而在。net 4.0中,即使系统被锁定,该调用也可以工作。

使用的dll是UIAutomationClient.dll, v4.0.0.0.

我得到的例外是:

系统。InvalidOperationException未被用户代码处理消息=由于对象的当前状态,操作无效。

我知道GUI测试与UIA通常需要系统解锁。由于这个调用在系统被锁定在。net 4.0时是有效的,我希望在迁移后具有相同的行为。

UIA InvokePattern.Invoke()在系统被锁定时抛出异常.(在.net 4.5.2中)

根据文档,当

时抛出InvalidOperationException

元素不支持InvokePattern控制模式,或者被隐藏或阻塞。

这可以追溯到。net 3.0,并且无论如何都不是由。net端处理的(它在底层的COM api中),所以这与。net版本无关。

我不建议在系统被锁定时使用GUI做任何事情。在这种情况下,GUI上下文丢失了。你甚至不能以编程方式发送键盘或鼠标事件。但是您可以将远程桌面(或VNC服务器软件)会话保持在窗口模式,非最小化,失去焦点。GUI上下文是活的,您可以在本地机器的另一个窗口中与远程PC上的GUI自动化脚本并行工作。