问题是关于C ++而不是C#中的UIAutomation。
我有一个comboBox元素:
IUIAutomationElement* comboBox
我想通过提供价值来进行选择, 例如 comboBox中的选项: “第一”(默认选中), “第二”, “第三”
我得到的价值: “第二”
在C#中, 我可以这样:
AutomationElement ListBox = comboBox.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.AutomationIdProperty, "ListBox"));
AutomationElement SelectedItem = ListBox.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "second"));
((SelectionItemPattern)SelectedItem.GetCurrentPattern(SelectionItemPattern.Pattern)).Select();
但是在C ++中, 当我找到listBox时,它将返回一个空的ptr。 这是代码:
IUIAutomationElement *listBox = NULL;
VARIANT value;
value.vt = VT_INT;
value.intVal = UIA_ListControlTypeId;
IUIAutomationCondition *listBoxCondition = NULL;
uiaObj->GetAutomation()->CreatePropertyCondition(UIA_ControlTypePropertyId, value, &listBoxCondition);
comboBox->FindFirst(TreeScope_Children, listBoxCondition, &listBox);
我昨天尝试先扩大规模 但是comboBox同时崩溃
朋友,有人可以帮我解决这个问题吗? 非常感谢!