我想使用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 ^'
任何人都可以帮我解决这些错误。
感谢。
答案 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