Cómo devolver propiedades de un proveedor de Automatización de la interfaz de usuario

Este tema contiene código de ejemplo que muestra cómo un proveedor de Microsoft Automatización de la interfaz de usuario devuelve propiedades de un elemento de interfaz de usuario a las aplicaciones cliente.

Para recuperar un valor de propiedad del proveedor, Automatización de la interfaz de usuario llama a la implementación de un proveedor del método IRawElementProviderSimple::GetPropertyValue, pasando el identificador de la propiedad que se va a recuperar y un puntero a una estructura VARIANT. Si el proveedor admite la propiedad especificada, copia el tipo de datos y el valor de la propiedad en la estructura VARIANT . Si no se admite la propiedad , el proveedor establece el miembro vt de la estructura VARIANT en VT_EMPTY.

IFACEMETHODIMP Provider::GetPropertyValue(PROPERTYID propertyId, VARIANT* pRetVal)
{
    // The Name property is typically the same as the Caption property of the 
    // control window, if it has one. Here, the Name is overridden for the 
    // sake of illustration. 
    if (propertyId == UIA_NamePropertyId) 
    {
        pRetVal->vt = VT_BSTR;
        pRetVal->bstrVal = SysAllocString(L"Custom button");
    }
    
    else if (propertyId == UIA_ControlTypePropertyId) 
    {
        pRetVal->vt = VT_I4;
        pRetVal->lVal = UIA_ButtonControlTypeId; 
    }

    else if (propertyId == UIA_IsContentElementPropertyId) 
    {
        pRetVal->vt = VT_BOOL;
        pRetVal->lVal = TRUE; 
    }

    else if (propertyId == UIA_IsControlElementPropertyId) 
    {
        pRetVal->vt = VT_BOOL;
        pRetVal->lVal = TRUE; 
    }

    //
    // Return other properties as appropriate for the control type. 
    //

    else
    {
        pRetVal->vt = VT_EMPTY;
        // UI Automation will attempt to get the property from the  
        // provider for window that hosts the control.
    }
    return S_OK;
}

Conceptual

Información general acerca de las propiedades de UI Automation

Temas de procedimientos para proveedores de Automatización de la interfaz de usuario