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) |