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);

雙精度浮點數類型的 使用者介面自動化 屬性不支援 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