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)

Confira também

Irawelementprovidersimple