Método IRawElementProviderSimple::GetPropertyValue (uiautomationcore.h)
Recupera o valor de uma propriedade compatível com o provedor do Microsoft Automação da Interface do Usuário.
Sintaxe
HRESULT GetPropertyValue(
[in] PROPERTYID propertyId,
[out, retval] VARIANT *pRetVal
);
Parâmetros
[in] propertyId
Tipo: PROPERTYID
O identificador da propriedade. Para obter uma lista de IDs de propriedade, consulte Identificadores de propriedade.
[out, retval] pRetVal
Tipo: VARIANT*
Recebe o valor da propriedade ou VT_EMPTY se a propriedade não tiver suporte desse provedor. Este parâmetro é passado não inicializado. Consulte Observações.
Valor retornado
Tipo: HRESULT
Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.
Se o provedor não der suporte à propriedade propertyId, o provedor deverá definir pRetVal-vt> como VT_EMPTY e retornar S_OK.
Comentários
Se um provedor estiver ocultando explicitamente o valor da propriedade (ou seja, o provedor não fornece a propriedade e a solicitação não deve ser passada para outros provedores), ele deverá retornar um ponteiro obtido usando a função UiaGetReservedNotSupportedValue . Por exemplo:
pRetVal->vt = VT_UNKNOWN;
UiaGetReservedNotSupportedValue(&pRetVal->punkVal);
Automação da Interface do Usuário propriedades do tipo duplo dão suporte a valores Não um Número (NaN). Ao retornar um valor NaN, o provedor deve retornar um NaN silencioso (sem sinalização) para evitar gerar uma exceção se exceções de ponto flutuante estiverem ativadas. O exemplo a seguir mostra como criar um NaN silencioso:
ULONGLONG ulNaN = 0xFFFFFFFFFFFFFFFF;
*pRetVal = *reinterpret_cast<double*>(&ulNaN);
Como alternativa, você pode usar a seguinte função nas bibliotecas padrão do C++:
numeric_limits<double>::quiet_NaN( )
Exemplos
O exemplo a seguir retorna vários valores de propriedade. A estrutura UiaIds contém identificadores de propriedade; para ver como ele é inicializado, consulte 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;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [aplicativos da área de trabalho | aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | uiautomationcore.h (include UIAutomation.h) |