Método IRawElementProviderSimple::GetPropertyValue (uiautomationcore.h)

Recupera el valor de una propiedad compatible con el proveedor de Microsoft Automatización de la interfaz de usuario.

Sintaxis

HRESULT GetPropertyValue(
  [in]          PROPERTYID propertyId,
  [out, retval] VARIANT    *pRetVal
);

Parámetros

[in] propertyId

Tipo: PROPERTYID

Identificador de propiedad. Para obtener una lista de identificadores de propiedad, vea Identificadores de propiedad.

[out, retval] pRetVal

Tipo: VARIANT*

Recibe el valor de propiedad o VT_EMPTY si este proveedor no admite la propiedad. Este parámetro se pasa sin inicializar. Vea la sección Comentarios.

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.

Si el proveedor no admite la propiedad propertyId, el proveedor debe establecer pRetVal-vt> en VT_EMPTY y devolver S_OK.

Comentarios

Si un proveedor oculta explícitamente el valor de propiedad (es decir, el proveedor no proporciona la propiedad y la solicitud no se pasa a otros proveedores), debe devolver un puntero obtenido mediante la función UiaGetReservedNotSupportedValue . Por ejemplo:

pRetVal->vt = VT_UNKNOWN;
UiaGetReservedNotSupportedValue(&pRetVal->punkVal);

Automatización de la interfaz de usuario propiedades del tipo doble admiten valores No un número (NaN). Al devolver un valor NaN, el proveedor debe devolver una NaN silenciosa (sin señalización) para evitar generar una excepción si las excepciones de punto flotante están activadas. En el ejemplo siguiente se muestra cómo crear una naN silenciosa:

ULONGLONG ulNaN = 0xFFFFFFFFFFFFFFFF;
    *pRetVal = *reinterpret_cast<double*>(&ulNaN);

Como alternativa, puede usar la siguiente función de las bibliotecas estándar de C++:

numeric_limits<double>::quiet_NaN( )

Ejemplos

En el ejemplo siguiente se devuelven varios valores de propiedad. La estructura UiaIds contiene identificadores de propiedad; para ver cómo se inicializa, consulte UiaLookupId.


HRESULT STDMETHODCALLTYPE Provider::GetPropertyValue(PROPERTYID propertyId, 
        VARIANT* pRetVal)
{
    if (propertyId == UiaIds.ControlTypeProperty)
    {
        pRetVal->vt = VT_I4;
        pRetVal->lVal = UiaIds.ButtonControlType;
    }

    // The Name property normally comes from the Caption property of the 
    // control window, if it has one. The Name is overridden here for the 
    // sake of illustration. 
    else if (propertyId == UiaIds.NameProperty)
    {
        pRetVal->vt = VT_BSTR;
        pRetVal->bstrVal = SysAllocString(L"ColorButton");
    }
    else
    {
        pRetVal->vt = VT_EMPTY;
        // UI Automation will attempt to get the property from the host 
        //window provider.
    }
    return S_OK;
}
            

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado uiautomationcore.h (include UIAutomation.h)

Consulte también

IRawElementProviderSimple