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