Método IRawElementProviderWindowlessSite::GetRuntimeIdPrefix (uiautomationcore.h)

Recupera uma ID de runtime do Microsoft Automação da Interface do Usuário exclusiva do site de controle Microsoft ActiveX sem janelas.

Sintaxe

HRESULT GetRuntimeIdPrefix(
  [out, retval] SAFEARRAY **pRetVal
);

Parâmetros

[out, retval] pRetVal

Tipo: SAFEARRAY**

Recebe a ID do runtime.

Retornar valor

Tipo: HRESULT

Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.

Comentários

Um fragmento de Automação da Interface do Usuário deve implementar o método IRawElementProviderFragment::GetRuntimeId para retornar uma ID exclusiva para o fragmento. Isso é difícil para um controle ActiveX sem janelas, que deve ser capaz de se identificar como exclusivo entre outros controles sem janelas no contêiner de controle ActiveX. Para resolve esse problema, o site sem janelas deve implementar o método GetRuntimeIdPrefix formando um SAFEARRAY que contém a constante UiaAppendRuntimeId, seguido por um valor inteiro exclusivo para esse site sem janelas.

Em seguida, o fragmento pode acrescentar um valor inteiro exclusivo em relação a todos os outros fragmentos no controle ActiveX sem janelas e devolvê-lo ao cliente.

Por exemplo, o site pode retornar um SAFEARRAY com o seguinte conteúdo: { UiaAppendRuntimeId, 3 }. Isso pode representar o terceiro controle ActiveX no contêiner. O método GetRuntimeId do provedor de fragmentos poderia formar um SAFEARRAY com o seguinte conteúdo: { UiaAppendRuntimeId, 3, 5 }. Isso pode representar o quinto fragmento dentro do contêiner ActiveX. Todo o SAFEARRAY seria uma ID exclusiva em relação a todo o contêiner de controle ActiveX.

Um provedor normalmente chama esse método como parte do tratamento do método GetRuntimeId .

Exemplos

O exemplo de código C++ a seguir mostra como implementar o método 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;  
}  

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8 [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2012 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho uiautomationcore.h (inclua UIAutomation.h)

Confira também

IRawElementProviderWindowlessSite