如何解决如何从元素中获取孩子?
我在IUIAutomationElement elem
中有我的元素,现在我想得到它的孩子,
为此,我尝试遵循以下代码
IUIAutomationElement* dummy = NULL; //creating a dummy
IUIAutomationElementArray* children_array; //creating an array
elem->GetCachedChildren(&children_array);
children_array->GetElement(0,&dummy);
qDebug() << dummy;
它不起作用,我收到未处理的异常。我要去哪里错了?
解决方法
我能够这样解决,我忘了设置真实条件,在这里我使用GetCachedChildren()
而不是使用FindAll()
,因为这样做更好地达到了目的。
IUIAutomationElementArray* children_array = NULL;
IUIAutomationElement* single_elem = nullptr;
TreeScope treeScope_1 = TreeScope::TreeScope_Children;
IUIAutomationCondition* Condition;
automation->CreateTrueCondition(&Condition);
HRESULT hs = elem->FindAll(treeScope_1,Condition,&children_array);
// HRESULT hs = elem->GetCachedChildren(&children_array);
if (SUCCEEDED(hs) && children_array != NULL) {
int number = 0;
children_array->get_Length(&number);
for (int i = 0;i < number;i++)
{
children_array->GetElement(i,&single_elem);
if (single_elem != NULL)
{
BSTR child_name = NULL;
hs = single_elem->get_CurrentName(&child_name);
if (SUCCEEDED(hs) && child_name != NULL)
{
std::wstring child_ws(child_name,SysStringLen(child_name));
QString child_qstring = QString::fromStdWString(child_ws);
global_ui->xml_scripts_textbox->addItem(child_qstring);
qDebug() << child_qstring;
}
SysFreeString(child_name);
}
single_elem = NULL;
}
SAFE_RELEASE(children_array);
}
```
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。