5

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

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

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

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

4

2 回答 2

2

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

于 2016-02-23T08:48:30.930 回答
1

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

于 2014-12-05T18:04:41.447 回答