IRawElementProviderSimple::GetPropertyValue 方法 (uiautomationcore.h)
检索 Microsoft UI 自动化 提供程序支持的属性的值。
语法
HRESULT GetPropertyValue(
[in] PROPERTYID propertyId,
[out, retval] VARIANT *pRetVal
);
参数
[in] propertyId
类型: PROPERTYID
属性标识符。 有关属性 ID 的列表,请参阅 属性标识符。
[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);
双精度类型的UI 自动化属性支持 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 |
标头 | uiautomationcore.h (包括 UIAutomation.h) |