Поделиться через


Метод 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)

См. также раздел

IRawElementProviderWindowlessSite