Метод IRawElementProviderWindowlessSite::GetRuntimeIdPrefix (uiautomationcore.h)
Извлекает идентификатор среды выполнения Microsoft модель автоматизации пользовательского интерфейса, уникальный для сайта элемента управления Microsoft ActiveX без окон.
Синтаксис
HRESULT GetRuntimeIdPrefix(
[out, retval] SAFEARRAY **pRetVal
);
Параметры
[out, retval] pRetVal
Тип: SAFEARRAY**
Получает идентификатор среды выполнения.
Возвращаемое значение
Тип: HRESULT
Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Фрагмент модель автоматизации пользовательского интерфейса должен реализовывать метод IRawElementProviderFragment::GetRuntimeId, чтобы получить уникальный идентификатор фрагмента. Это трудно сделать для элемента ActiveX без окон, который должен быть в состоянии идентифицировать себя как уникальный среди других элементов управления без окон в контейнере элементов ActiveX. Чтобы устранить эту проблему, сайт без окна должен реализовать метод GetRuntimeIdPrefix путем формирования SAFEARRAY , содержащего константу UiaAppendRuntimeId, а затем целочисленное значение, уникальное для этого сайта без окон.
Затем фрагмент может добавить целочисленное значение, уникальное относительно всех остальных фрагментов в элементе управления ActiveX без окон, и вернуть его клиенту.
Например, сайт может вернуть SAFEARRAY со следующим содержимым: { UiaAppendRuntimeId, 3 }
. Это может быть третий элемент управления ActiveX в контейнере. Затем метод GetRuntimeId поставщика фрагментов может сформировать SAFEARRAY со следующим содержимым: { UiaAppendRuntimeId, 3, 5 }
. Это может быть пятый фрагмент в контейнере ActiveX. Весь объект SAFEARRAY будет уникальным идентификатором по отношению ко всему контейнеру элементов ActiveX.
Поставщик обычно вызывает этот метод в рамках обработки метода GetRuntimeId .
Примеры
В следующем примере кода C++ показано, как реализовать метод GetRuntimeIdPrefix .
IFACEMETHODIMP CProviderWindowlessSite::GetRuntimeIdPrefix(
SAFEARRAY **ppsaPrefix)
{
if (ppsaPrefix == NULL)
{
return E_INVALIDARG;
}
// m_siteIndex is the index of the windowless control's
// site. It is defined by the control container.
int rId[] = { UiaAppendRuntimeId, m_siteIndex };
SAFEARRAY *psa = SafeArrayCreateVector(VT_I4, 0, 2);
if (psa == NULL)
{
return E_OUTOFMEMORY;
}
for (LONG i = 0; i < 2; i++)
{
SafeArrayPutElement(psa, &i, (void*)&(rId[i]));
}
*ppsaPrefix = psa;
return S_OK;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2012 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | uiautomationcore.h (включая UIAutomation.h) |