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)

另请参阅

IRawElementProviderSimple