Share via


IAccessibleEx 實作指導方針

Microsoft 消費者介面自動化核心可以擷取伺服器透過IAccessible介面公開之任何可存取物件的所有 Microsoft Active Accessibility 屬性。 實作 IAccessibleEx時,您只能公開無法透過現有 Microsoft Active Accessibility 屬性公開的 UI 功能層面。 本主題會識別消費者介面自動化屬性和控制項模式,這些模式代表在 Microsoft Active Accessibility 中沒有對應項的 UI 功能,它們是您可以在IAccessibleEx實作中公開的屬性和控制項模式。

本主題包含下列幾節:

屬性

下列消費者介面自動化屬性不會與 Microsoft Active Accessibility 功能重迭。 它們可用於 IAccessibleEx 實作:

  • AriaProperties
  • AriaRole
  • AutomationId
  • ClassName
  • ClickablePoint
  • ControllerFor
  • 文化特性
  • DescribedBy
  • FlowTo
  • FrameworkId
  • IsContentElement
  • IsControlElement
  • IsDataValidForForm
  • IsRequiredForForm
  • ItemStatus
  • ItemType
  • LabeledBy
  • LocalizedControlType
  • 方向

雖然 AcceleratorKey 和 AccessKey 消費者介面自動化屬性與 accKeyboardShortcut Microsoft Active Accessibility 屬性重迭,但您仍然可以在IAccessibleEx實作中使用它們,讓具有便捷鍵和快速鍵的控制項使用它們。 同樣地,ControlType 消費者介面自動化 屬性與 Microsoft Active Accessibility accRole 屬性重迭,但您仍然可以在IAccessibleEx實作中使用它來定義控制項更特定的角色。

由於 Microsoft Active Accessibility 屬性已涵蓋下列消費者介面自動化元素屬性,因此不需要在IAccessibleEx實作中使用它們。

使用者介面自動化屬性 Microsoft Active Accessibility 對等專案
BoundingRectangle accLocation
HasKeyboardFocus accState, STATE_SYSTEM_FOCUSED
IsEnabled accState, STATE_SYSTEM_UNAVAILABLE
IsKeyboardFocusable accState, STATE_SYSTEM_FOCUSABLE
IsPassword accState, STATE_SYSTEM_PROTECTED
HelpText accHelp
名稱 accName
NativeWindowHandle WindowFromAccessibleObject
IsOffscreen accState,STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN
ProcessId 由 消費者介面自動化 核心提供

 

對於任何不支援的 消費者介面自動化 屬性,您的IRawElementProviderSimple::GetPropertyValue方法實作應該將pRetVal參數設定為 VT_EMPTY,並傳回S_OK。 傳回 UIA_E_NOTSUPPORTED 可能會導致 MSAA 對 UIA Proxy 移除對應屬性的預設對應。

控制項模式

下列消費者介面自動化控制項模式不會與 Microsoft Active Accessibility 功能重迭。 它們可用於 IAccessibleEx 實作:

  • Dock
  • ExpandCollapse
  • 方格
  • GridItem
  • MultipleView
  • RangeValue
  • Scroll
  • ScrollItem
  • SynchronizedInput
  • 資料表
  • TableItem
  • 轉換

針對 RangeValue 和 Transform 控制項模式,某些方法會在消費者介面自動化控制項模式與 Microsoft Active Accessibility 方法之間重迭。 在這些情況下,必須實作這兩者。 例如,必須實作 Microsoft Active Accessibility 的IAccessible::get_accValueIAccessible::p ut_accValue方法,如同消費者介面自動化IRangeValueProvider::ValueIRangeValueProvider::SetValue方法一樣。 在內部,實作可以共用這些程式碼。 實作這兩組集合的需求可避免部分實作模式介面,同時保留現有 Microsoft Active Accessibility 用戶端可使用 的 IAccessible 介面。

下列消費者介面自動化控制項模式在控制項有下面所述的其中一個角色時不需要;否則,如果相關,則應該明確支援這些模式。

消費者介面自動化控制項模式 Microsoft Active Accessibility Role
InvokePattern ROLE_SYSTEM_PUSHBUTTONROLE_SYSTEM_MENUITEMROLE_SYSTEM_BUTTONDROPDOWNROLE_SYSTEM_SPLITBUTTON,以及 accDefaultAction 屬性值不是 Null的任何其他角色。
SelectionItemPattern ROLE_SYSTEM_LISTITEMROLE_SYSTEM_RADIOBUTTON
SelectionPattern ROLE_SYSTEM_LIST
TogglePattern ROLE_SYSTEM_CHECKBUTTON
ValuePattern accValue 屬性的值不是Null時,ROLE_SYSTEM_TEXT (不是唯讀) 、ROLE_SYSTEM_PROGRESSBARROLE_SYSTEM_COMBOBOX,以及任何其他角色。
WindowPattern 在最上層 Microsoft Win32 HWNDs 上自動支援。

 

消費者介面自動化屬性已變更事件的 WinEvents

除了針對IAccessible定義的事件之外,也會定義下列事件識別碼,而且可以與IAccessibleEx實作搭配使用,做為對應消費者介面自動化屬性的屬性變更事件。 這些會使用與針對 IAccessible定義的事件相同的機制。 如需詳細資訊,請參閱 WinEvents

IAccessibleEx 實作的 WinEvent 識別碼 Microsoft Active Accessibility 的相關 WinEvent 識別碼
UIA_AriaPropertiesPropertyId
UIA_AriaRolePropertyId
UIA_ControllerForPropertyId
UIA_DescribedByPropertyId
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId
UIA_InputDiscardedEventId
UIA_InputReachedOtherElementEventId
UIA_InputReachedTargetEventId
UIA_IsDataValidForFormPropertyId
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId
UIA_MultipleViewCurrentViewPropertyId
UIA_ScrollHorizontallyScrollablePropertyId
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId
UIA_ScrollVerticallyScrollablePropertyId
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

針對上述EVENT_OBJECT_值列在之後的事件,除了列出的已變更事件之外, IAccessibleEx 實作也應該引發此事件。 這可讓現有的 IAccessibleEx 用戶端程式代碼繼續運作,同時將更細微的事件資訊傳達給感興趣的用戶端。

WinEvents

IAccessibleEx 介面