如何使用UIAutomation将所选项目设置为comboBox?

时间:2019-07-05 10:00:23

标签: c++ microsoft-ui-automation

  

问题是关于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同时崩溃

朋友,有人可以帮我解决这个问题吗? 非常感谢!

0 个答案:

没有答案