我试图使用调用模式单击一个按钮。

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

它抛出COMException,我不知道为什么吗?

当我运行此代码时,实际上已按下了按钮,并且功能运行良好。但是随后它停止了一段时间,并引发了此异常。

最佳答案

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

关于ui-automation - Microsoft UI自动化: Invoke Pattern Exception,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25561199/

10-12 20:04