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

Récupère la valeur d’une propriété prise en charge par le fournisseur microsoft UI Automation.

Syntaxe

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

Paramètres

[in] propertyId

Type : PROPERTYID

Identificateur de la propriété. Pour obtenir la liste des ID de propriété, consultez Identificateurs de propriétés.

[out, retval] pRetVal

Type : VARIANT*

Reçoit la valeur de la propriété ou VT_EMPTY si la propriété n’est pas prise en charge par ce fournisseur. Ce paramètre est passé sans être initialisé. Consultez la section Notes.

Valeur de retour

Type : HRESULT

Si cette méthode réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Si le fournisseur ne prend pas en charge la propriété propertyId, le fournisseur doit définir pRetVal-vt>sur VT_EMPTY et retourner S_OK.

Remarques

Si un fournisseur masque explicitement la valeur de la propriété (autrement dit, le fournisseur ne fournit pas la propriété et que la demande ne doit pas être transmise à d’autres fournisseurs), il doit retourner un pointeur obtenu à l’aide de la fonction UiaGetReservedNotSupportedValue . Par exemple :

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

UI Automation propriétés du type double prennent en charge les valeurs Not a Number (NaN). Lors du retour d’une valeur NaN, le fournisseur doit retourner un nom NaN silencieux (sans signalisation) pour éviter de déclencher une exception si les exceptions à virgule flottante sont activées. L’exemple suivant montre comment créer un nom naN silencieux :

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

Vous pouvez également utiliser la fonction suivante à partir des bibliothèques C++ standard :

numeric_limits<double>::quiet_NaN( )

Exemples

L’exemple suivant retourne différentes valeurs de propriété. La structure UiaIds contient des identificateurs de propriété ; pour voir comment il est initialisé, consultez 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;
}
            

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête uiautomationcore.h (incluez UIAutomation.h)

Voir aussi

IRawElementProviderSimple