Метод 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) |