UI自动化错误:由于应用程序正在调度输入同步调用,因此无法进行传出呼叫

时间:2015-02-18 20:33:58

标签: powershell com microsoft-ui-automation

我正在尝试为自己调用com的应用程序自动化UI导航。

当我自动点击(运行搜索以查看哪些设备在线)时,我收到以下弹出错误:

  

由于应用程序正在调度输入同步调用,因此无法进行传出呼叫。

失败的代码行如下:

Get-UiaButton -AutomationId '136' -Class 'Button' -Name 'Search Now' -Win32 | Invoke-UIAButtonClick

我所做的研究表明它正在解决公寓问题。 Powershell 2原生在MTA中运行。虽然powershell 3/4本身在STA中运行。我尝试在两种环境中运行该命令,但它以同样的方式失败。

进一步的研究表明,正在尝试从错误类型的线程中发送SendMessage。我控制的唯一消息是Get-UIAButton调用生成的消息。我尝试使用

关闭对象消息
[UIAutomation.Preferences]::UseElementsPatternObjectModel = $false
[UIAutomation.Preferences]::UseElementsSearchObjectModel = $false

然而,有两行仍然通过

Current        : UIAutomation.UiElementInformation
__interceptors : {UIAutomation.MethodSelectorAspect, UIAutomation.ErrorHandlingAspect}

我找不到任何其他偏好,看起来他们会关闭其余的。

我尝试将输出重定向到| Out-Null ...但它仍会产生相同的错误。

我也试过在第二个PowerShell实例下运行该命令。

powershell.exe -mta -nologo -noprofile -executionpolicy bypass -command "ipmo C:\Users\Admin\Downloads\UIAutomation.0.8.7B3.NET35b\UIAutomation.dll; Get-UiaButton -AutomationId '136' -Class 'Button' -Name 'Search Now' -Win32 | Invoke-UIAButtonClick"

我不确定下一步该尝试什么。老实说,我可能会尝试使用Autoit自动执行此单击。

0 个答案:

没有答案