Microsoft UI自动化:调用模式异常



我正在尝试使用invoke模式单击一个按钮。

InvokePattern ipAddMPButton = (InvokePattern)aeAddMPButton.GetCurrentPattern(InvokePattern.Pattern);
        try
        {
            ipAddMPButton .Invoke();
        }
        catch (System.Runtime.InteropServices.COMException e)
        {
            // TODO
        }

它抛出了一个异常,我不明白为什么?

当我运行这段代码时,按钮实际上被按下了,功能运行良好。但是,它只是停止了一段时间,并抛出了这个异常。

事实上,我发现这里已经讨论过了:https://social.msdn.microsoft.com/Forums/en-US/673bba3d-27b3-4374-b049-0d2e8ec5e462/hang-with-invokepattern-invoke-in-virtual-pc?forum=windowsaccessibilityandautomation。总之,Winforms打开模式对话框并不能很好地使用UIAutomation,因为它不会从Invoke命令返回,只会创建模式对话框,这当然会阻止它完成操作。建议的解决方案是生成一个后台线程,并从该线程激活Invoke(或任何其他操作)。我还建议强制执行某种超时操作,因为在某些情况下可能会很长时间。

尝试检查aeAddMPButton.GetAllSupportedPatterns(),然后尝试调用then。。

最新更新