UI 自動化屬性概觀

Microsoft 消費者介面自動化提供者會在消費者介面自動化元素上公開屬性。 屬性可讓用戶端應用程式擷取控制項的相關資訊。

消費者介面自動化會公開兩種不同類型的屬性:自動化專案屬性,以及控制項模式正確性。 自動化專案屬性是由一組通用屬性所組成,例如 Name、AcceleratorKey 和 ClassName,這些屬性是由所有消費者介面自動化元素公開,而不論控制項類型為何。 大部分的自動化元素屬性都是靜態值。

控制項模式屬性是由支援特定控制項模式的控制項所公開的屬性。 每個控制項模式都有一組對應的控制項模式屬性,控制項必須公開這些屬性。 例如,支援 Grid 控制項模式的控制項會公開 ColumnCount 和 RowCount 屬性。 大部分的控制項模式屬性都是動態值。

本主題包含下列各節。

屬性識別項

每個屬性都會以稱為屬性識別碼PROPERTYID數值來識別 (識別碼) 。 提供者和用戶端會在方法呼叫中使用數值識別碼,例如 IRawElementProviderAdviseEvents::AdviseEventAddedIUIAutomationElement::GetCachedPropertyValue 來識別屬性要求。 如需每個消費者介面自動化屬性識別碼的詳細描述,包括每個屬性的資料類型和預設值,請參閱屬性識別碼

屬性值

所有屬性都是唯讀的,雖然有些屬性可以使用對控制項採取動作的方法進行變更,例如 IDockProvider::SetDockPosition (提供者) 或 IUIAutomationDockPattern::SetDockPosition (用戶端) 。

如需擷取屬性值的相關資訊,請參閱從 消費者介面自動化 Elements 擷取屬性

屬性和事件

與消費者介面自動化中的屬性緊密關聯是屬性變更事件的概念。 針對動態屬性,用戶端應用程式需要知道屬性值已變更的方法,以便更新其資訊快取,或以其他方式回應新資訊。 用戶端可以註冊以接聽任何屬性上屬性變更的事件。

當 UI 中的某個項目變更時,提供者會引發事件。 例如,如果選取或清除核取方塊, 則會由切換 控制項模式的提供者實作引發屬性變更事件。 提供者可以視任何用戶端是否正在接聽事件或接聽特定事件,以選擇性地引發事件。

並非所有屬性變更都會引發事件,這完全由項目的使用者介面自動化提供者實作所決定。 例如,當 Selection 屬性變更時,清單方塊的標準 Proxy 提供者不會引發屬性變更事件。 在此情況下,當選取範圍變更 (UIA_SelectionItem_ElementSelectedEventId) 時,應用程式必須接聽引發的事件。

用戶端會訂閱事件來接聽事件,如訂閱消費者介面自動化事件中所述。 特別是屬性變更的事件,用戶端必須實作 IUIAutomationPropertyChangedEventHandler ,並將介面傳遞至 IUIAutomation::AddPropertyChangedEventHandlerIUIAutomation::AddPropertyChangedEventHandlerNativeArray

參考

GetCurrentPropertyValue

GetCurrentPropertyValueEx

GetCachedPropertyValue

GetCachedPropertyValueEx

概念

UI 自動化控制項模式概觀

UI 自動化控制項類型概觀

UI 自動化事件概觀