Метод IRawElementProviderFragment::Navigate (uiautomationcore.h)
Извлекает элемент службы автоматизации пользовательского интерфейса Майкрософт в указанном направлении в дереве автоматизации пользовательского интерфейса.
Синтаксис
HRESULT Navigate(
[in] NavigateDirection direction,
[out, retval] IRawElementProviderFragment **pRetVal
);
Параметры
[in] direction
Тип: NavigateDirection
Направление навигации.
[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] |
целевая платформа | Виндоус |
заголовка | uiautomationcore.h (include UIAutomation.h) |