2

一旦系统被锁定,调用 Invoke() 方法(来自 System.Windows.Automation.InvokePattern)就会失败。在将我们的项目迁移到 .NET 4.5.2 后可以看到这种行为。而在 .NET 4.0 中,即使系统被锁定,该调用也可以正常工作。

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

我得到的例外是:

System.InvalidOperationException 未被用户代码处理 Message=Operation 由于对象的当前状态而无效。

我知道使用 UIA 进行 GUI 测试通常需要解锁系统。由于此调用在系统锁定在 .NET 4.0 时有效,因此我希望在迁移后具有相同的行为。

4

2 回答 2

1

根据文档,InvalidOperationException

该元素不支持 InvokePattern 控件模式或者被隐藏或阻止。

这一直追溯到 .NET 3.0,并且无论如何都没有真正由 .NET 端处理(它在底层 COM API 中),因此这不太可能与 .NET 版本有关。

于 2015-09-03T12:07:15.193 回答
0

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

于 2015-09-04T12:57:27.217 回答