Поделиться через


Метод IRawElementProviderSimple::GetPropertyValue (uiautomationcore.h)

Извлекает значение свойства, поддерживаемого поставщиком microsoft модель автоматизации пользовательского интерфейса.

Синтаксис

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

Параметры

[in] propertyId

Тип: PROPERTYID

Идентификатор свойства. Список идентификаторов свойств см. в разделе Идентификаторы свойств.

[out, retval] pRetVal

Тип: VARIANT*

Получает значение свойства или VT_EMPTY , если свойство не поддерживается этим поставщиком. Этот параметр передается неинициализированным. См. заметки.

Возвращаемое значение

Тип: HRESULT

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Если поставщик не поддерживает свойство propertyId, поставщик должен задать для pRetVal-vt>значение VT_EMPTY и вернуть S_OK.

Комментарии

Если поставщик явно скрывает значение свойства (то есть поставщик не предоставляет свойство, а запрос не передается другим поставщикам), он должен вернуть указатель, полученный с помощью функции UiaGetReservedNotSupportedValue . Пример:

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

модель автоматизации пользовательского интерфейса свойства типа double поддерживают значения Not a Number (NaN). При возврате значения NaN поставщик должен возвращать тихий (не сигнальный) naN, чтобы избежать возникновения исключения, если включены исключения с плавающей запятой. В следующем примере показано, как создать тихий naN:

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

Кроме того, можно использовать следующую функцию из стандартных библиотек C++:

numeric_limits<double>::quiet_NaN( )

Примеры

В следующем примере возвращаются различные значения свойств. Структура UiaIds содержит идентификаторы свойств; Сведения о том, как он инициализирован, см. в разделе 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;
}
            

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header uiautomationcore.h (включая UIAutomation.h)

См. также раздел

IRawElementProviderSimple