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