Método IRawElementProviderWindowlessSite::GetRuntimeIdPrefix (uiautomationcore.h)
Recupera un identificador de tiempo de ejecución de Microsoft Automatización de la interfaz de usuario que es único para el sitio de control de Microsoft ActiveX sin ventanas.
Sintaxis
HRESULT GetRuntimeIdPrefix(
[out, retval] SAFEARRAY **pRetVal
);
Parámetros
[out, retval] pRetVal
Tipo: SAFEARRAY**
Recibe el identificador de tiempo de ejecución.
Valor devuelto
Tipo: HRESULT
Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.
Comentarios
Un fragmento de Automatización de la interfaz de usuario debe implementar el método IRawElementProviderFragment::GetRuntimeId para devolver un identificador único para el fragmento. Esto es difícil para un control ActiveX sin ventanas, que debe ser capaz de identificarse como único entre otros controles sin ventana en el contenedor de controles ActiveX. Para resolver este problema, el sitio sin ventanas debe implementar el método GetRuntimeIdPrefix formando un SAFEARRAY que contiene la constante UiaAppendRuntimeId, seguido de un valor entero que es único para este sitio sin ventanas.
A continuación, el fragmento puede anexar un valor entero que sea único en relación con todos los demás fragmentos del control ActiveX sin ventana y devolverlo al cliente.
Por ejemplo, el sitio podría devolver un SAFEARRAY con el siguiente contenido: { UiaAppendRuntimeId, 3 }
. Esto podría representar el tercer control ActiveX del contenedor. Después, el método GetRuntimeId del proveedor de fragmentos podría formar una SAFEARRAY con el siguiente contenido: { UiaAppendRuntimeId, 3, 5 }
. Esto podría representar el quinto fragmento dentro del contenedor ActiveX. Todo SAFEARRAY sería un identificador único relativo al contenedor de control ActiveX completo.
Normalmente, un proveedor llama a este método como parte del control del método GetRuntimeId .
Ejemplos
En el siguiente ejemplo de código de C++ se muestra cómo implementar el 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 | Value |
---|---|
Cliente mínimo compatible | Windows 8 [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2012 [aplicaciones de escritorio | Aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | uiautomationcore.h (incluir UIAutomation.h) |