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