Freigeben über


Zurückgeben von Eigenschaften von einem Benutzeroberflächenautomatisierung-Anbieter

Dieses Thema enthält Beispielcode, der zeigt, wie ein Microsoft Benutzeroberflächenautomatisierung-Anbieter Eigenschaften eines UI-Elements an Clientanwendungen zurückgibt.

Um einen Eigenschaftswert vom Anbieter abzurufen, ruft Benutzeroberflächenautomatisierung die Implementierung eines Anbieters der IRawElementProviderSimple::GetPropertyValue-Methode auf, wobei die ID der abzurufenden Eigenschaft und ein Zeiger auf eine VARIANT-Struktur übergeben werden. Wenn der Anbieter die angegebene Eigenschaft unterstützt, kopiert er den Datentyp und den Wert der Eigenschaft in die VARIANT-Struktur . Wenn die -Eigenschaft nicht unterstützt wird, legt der Anbieter das vt-Element der VARIANT-Struktur auf VT_EMPTY fest.

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;
}

Konzept

Übersicht über die Benutzeroberflächenautomatisierungs-Eigenschaften

How-To-Themen für Benutzeroberflächenautomatisierung-Anbieter