從UI自動化元素擷取屬性
IUIAutomationElement 上的屬性 物件包含 UI 元素的相關信息,通常是控件。 元素的屬性為泛型;也就是說,不是控件類型特有的。 元素的控件特定屬性會由其控件模式介面公開。
Microsoft使用者介面自動化屬性是唯讀的。 若要設定控件的屬性,您必須使用適當控件模式的方法。 例如,使用 IUIAutomationScrollPattern::Scroll 來變更卷動視窗的位置值。
為了改善效能,擷取元素時可以快取控件和控件模式的屬性值。 如需詳細資訊,請參閱 快取 UI 自動化屬性和控制項模式。
本主題包含下列各節。
屬性標識碼
屬性標識碼定義於Uiautomationclient.h 中。 當您訂閱屬性變更事件、擷取屬性值和建構屬性條件時,這些屬性可用來指定屬性。 屬性標識碼也會識別 呼叫 IUIAutomationPropertyChangedEventHandler::HandlePropertyChangedEvent 時已變更的屬性。
如需 UI 自動化屬性識別碼的清單,請參閱 屬性識別碼。
物業條件
屬性標識碼用於構建 IUIAutomationPropertyCondition 物件,並用於尋找UI自動化元素。 例如,您可能會想要尋找具有特定名稱的專案,或已啟用的所有控制件。 每個屬性條件都會指定屬性識別碼和屬性必須相符的值。
如需詳細資訊,請參閱下列參考主題:
- IUIAutomation::CreatePropertyCondition
- IUIAutomation::CreatePropertyConditionEx
- IUIAutomationElement::FindFirst
- IUIAutomationElement::FindAll
擷取屬性
某些泛型屬性和所有控制項模式屬性都可以作為 IUIAutomationElement 或控制項模式介面上的屬性,而且可以使用存取子來擷取,例如 IUIAutomationElement::CurrentName 或 CachedDockPosition。
此外,您可以使用其中一種下列方法來擷取任何目前或快取的屬性(控件模式屬性除外):
這些方法提供稍微更佳的效能和對完整屬性範圍的存取。 不過,值會在 VARIANT 結構中傳回,而個別屬性存取子則會將值轉換成適當的類型。
默認屬性值
如果UI自動化提供者未實作屬性,UI自動化可以提供預設值。 例如,如果控件的提供者不支援 UIA_HelpTextPropertyId所識別的屬性,則UI自動化會傳回空字串。 同樣地,如果提供者不支援 UIA_IsDockPatternAvailablePropertyId所識別的屬性,則UI自動化會傳回 FALSE。
IUIAutomationElement::GetCurrentPropertyValue 和 GetCurrentPropertyValueEx (在類似方法組之間)之間的差異在於 “Ex” 方法可以指定不會傳回預設值。 在此情況下,傳回值是特殊的唯一常數,表示不支援 屬性。 在收到此值時,應用程式可以提供自己的值,或直接忽略 屬性。
相關主題
-
概念