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) |