在VC ++中使用Winform应用程序中的UI Automation单击按钮

时间:2012-06-27 12:30:22

标签: winforms visual-studio-2010 visual-c++ ui-automation

我想使用UI Automation点击按钮。我在Winform VC ++中使用UI自动化。

这是我的代码..

 AutomationElement^  Select_connect_button= aeForm->FindFirst(TreeScope::Children,gcnew PropertyCondition(AutomationElement::NameProperty, "Select/Connect"));
InvokePattern^ ipClickButton1 = (InvokePattern)Select_connect_button->GetCurrentPattern(InvokePattern::Pattern);
 ipClickButton1->Invoke();

但它显示了这些错误:

error C2440: 'type cast' : cannot convert from 'System::Object ^' to 'System::Windows::Automation::InvokePattern'

error C2440: 'initializing' : cannot convert from 'System::Windows::Automation::InvokePattern' to 'System::Windows::Automation::InvokePattern ^'

任何人都可以帮我解决这些错误。

感谢。

2 个答案:

答案 0 :(得分:0)

构建错误是您将(InvokePattern)转换为“InvokePattern ^”。

在我的测试中,将第二行更新为以下代码将解决此问题:

  

InvokePattern ^ ipClickButton1 =( InvokePattern ^ )Select_connect_button-> GetCurrentPattern(InvokePattern :: Pattern);

答案 1 :(得分:0)

您无法使用这些对象进行投射。这是在C#中实现它的一种方法。您可以在此处获取方法名称等。您需要的各种常量如下:

C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0 \ Include \ UIAutomationClient.h (可能是v7.1目录)

public static IUIAutomationInvokePattern elementToInvokePattern(this IUIAutomationElement element)
    {
        var conditionInvokePattern = auto.CreatePropertyCondition(
                                                        WindowsConstants.UIA_IsInvokePatternAvailablePropertyId,
                                                        true);

        var cacheRequest = auto.CreateCacheRequest();
        cacheRequest.AddPattern(WindowsConstants.UIA_InvokePatternId);

        var cachedElement = element.FindFirstBuildCache(TreeScope.TreeScope_Element,
                                            conditionInvokePattern,
                                            cacheRequest);

        var invokePattern = (IUIAutomationInvokePattern)
            cachedElement.GetCachedPattern(WindowsConstants.UIA_InvokePatternId);
        return invokePattern;
    }

示例中的常量来自此处:http://msdn.microsoft.com/en-us/library/dd757483.aspx