Метод IRawElementProviderFragment::Navigate (uiautomationcore.h)
Извлекает элемент автоматизации пользовательского интерфейса Майкрософт в указанном направлении в дереве автоматизации пользовательского интерфейса.
Синтаксис
HRESULT Navigate(
NavigateDirection direction,
[out, retval] IRawElementProviderFragment **pRetVal
);
Параметры
direction
[out, retval] pRetVal
Тип: IRawElementProviderFragment**
Получает указатель на поставщика элемента автоматизации пользовательского интерфейса в указанном направлении или значение NULL , если в этом направлении нет элемента. Этот параметр передается неинициализированным.
Возвращаемое значение
Тип: HRESULT
Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Реализации этого метода сервером автоматизации пользовательского интерфейса определяют структуру дерева автоматизации пользовательского интерфейса.
Навигация должна поддерживаться вверх к родительскому элементу, вниз к первому и последнему дочерним элементам, а также с боковой стороны к следующему и предыдущему одноуровневому элементам, если применимо.
Каждый дочерний узел имеет только один родительский узел и должен быть помещен в цепочку одноуровневых элементов, достигнутых от родительского узла NavigateDirection_FirstChild и NavigateDirection_LastChild.
Отношения между двумя братьями и сестрами должны быть одинаковыми в обоих направлениях: если A является предыдущим братом B (NavigateDirection_PreviousSibling), то B является следующим братом A (NavigateDirection_NextSibling). У первого ребенка (NavigateDirection_FirstChild) нет предыдущего брата, а у последнего ребенка (NavigateDirection_LastChild) нет следующего брата.
Корня фрагментов не позволяет переходить к родительским или одноуровневые элементы; Навигация между корнями фрагментов обрабатывается поставщиками окон по умолчанию. Элементы во фрагментах должны переходить только к другим элементам внутри этого фрагмента.
Примеры
В следующем примере показана реализация поставщика элементов списка. Переменные-члены для родительского, предыдущего и следующего одноуровневого поставщиков были инициализированы при создании списка.
HRESULT STDMETHODCALLTYPE ListItemProvider::Navigate(NavigateDirection direction, IRawElementProviderFragment ** pRetVal)
{
if (pRetVal == NULL)
{
return E_INVALIDARG;
}
IRawElementProviderFragment* pFrag = NULL;
switch(direction)
{
case NavigateDirection_Parent:
pFrag = (IRawElementProviderFragment*)m_parentProvider;
break;
case NavigateDirection_NextSibling:
pFrag = (IRawElementProviderFragment*)m_nextSiblingProvider;
break;
case NavigateDirection_PreviousSibling:
pFrag = (IRawElementProviderFragment*)m_previousSiblingProvider;
break;
}
*pRetVal = pFrag;
if (pFrag != NULL)
{
pFrag->AddRef();
}
return S_OK;
}
Требования
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | uiautomationcore.h (включая UIAutomation.h) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по