Microsoft UI Automation:调用模式异常

时间:2014-08-29 03:19:19

标签: ui-automation microsoft-ui-automation ui-patterns

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

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

抛出COMException,我无法找出原因?

当我运行此代码时,按钮实际上已按下,功能正常。但随后它会停止一段时间,并抛出此异常。

2 个答案:

答案 0 :(得分:2)

实际上我发现这已经在这里讨论了: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(或任何其他操作)。我还建议在完成操作时强制执行某种超时,因为在某些情况下它可能很长。

答案 1 :(得分:1)

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