Metodo IRawElementProviderSimple::GetPropertyValue (uiautomationcore.h)

Recupera il valore di una proprietà supportata dal provider di Automazione interfaccia utente Microsoft.

Sintassi

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

Parametri

[in] propertyId

Tipo: PROPERTYID

Identificatore della proprietà. Per un elenco di ID proprietà, vedere Identificatori di proprietà.

[out, retval] pRetVal

Tipo: VARIANT*

Riceve il valore della proprietà o VT_EMPTY se la proprietà non è supportata da questo provider. Questo parametro viene passato non inizializzato. Vedere la sezione Osservazioni.

Valore restituito

Tipo: HRESULT

Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Se il provider non supporta la proprietà propertyId, il provider deve impostare pRetVal-vt> su VT_EMPTY e restituire S_OK.

Commenti

Se un provider nasconde in modo esplicito il valore della proprietà , ovvero il provider non fornisce la proprietà e la richiesta non deve essere passata ad altri provider, deve restituire un puntatore ottenuto usando la funzione UiaGetReservedNotSupportedValue . Ad esempio:

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

Automazione interfaccia utente proprietà del tipo doppio supportano i valori Not a Number (NaN). Quando si restituisce un valore NaN, il provider deve restituire un valore NaN tranquillo (non segnalante) per evitare di generare un'eccezione se vengono attivate eccezioni a virgola mobile. Nell'esempio seguente viene illustrato come creare un NaN tranquillo:

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

In alternativa, è possibile usare la funzione seguente dalle librerie C++ standard:

numeric_limits<double>::quiet_NaN( )

Esempio

Nell'esempio seguente vengono restituiti vari valori di proprietà. La struttura UiaIds contiene identificatori di proprietà; per vedere come viene inizializzata, vedere 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;
}
            

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione uiautomationcore.h (includere UIAutomation.h)

Vedi anche

IRawElementProviderSimple