系统锁定时,UIA InvokePattern.Invoke()抛出异常。 (在.NET 4.5.2中)

时间:2015-09-03 11:57:41

标签: c# .net ui-automation uia

系统锁定后,对Invoke()方法(来自System.Windows.Automation.InvokePattern)的调用将失败。将项目迁移到.NET 4.5.2后会出现此行为。而在.NET 4.0中,即使系统被锁定,调用也会起作用。

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

我得到的例外是:

  

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

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

2 个答案:

答案 0 :(得分:1)

根据文档,

时会抛出InvalidOperationException
  

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

这可以追溯到.NET 3.0,并且无论如何都不是由.NET端实际处理的(它位于底层的COM API中),所以这与.NET版本无关。 / p>

答案 1 :(得分:0)

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