共用方式為


IAccessibleEx 實作指導方針

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

本主題包含下列各節:

性能

下列UI自動化屬性不會與 Microsoft Active Accessibility 功能重疊。 它們可用於 IAccessibleEx 實作:

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

雖然 AcceleratorKey 和 AccessKey UI 自動化屬性確實與 accKeyboardShortcut Microsoft Active Accessibility 属性重疊,但對於同時具有訪問鍵和快捷鍵的控件,您仍然可以在 IAccessibleEx 實作中使用這些屬性。 同樣地,ControlType UI Automation 屬性會與 Microsoft Active Accessibility accRole 屬性重疊,但您仍然可以在 IAccessibleEx 實作中使用它,以定義控件更特定的角色。

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

UI 自動化屬性 Microsoft使用中輔助功能對等專案
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 由UI自動化核心提供

 

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

控制件模式

下列UI自動化控制項模式不會與 Microsoft Active Accessibility 功能重疊。 它們可用於 IAccessibleEx 實作:

  • 碼頭
  • ExpandCollapse
  • 網 格
  • GridItem
  • MultipleView
  • RangeValue
  • 滾動
  • ScrollItem
  • SynchronizedInput
  • 桌子
  • TableItem
  • 變換

對於 RangeValue 和轉換控件模式,某些方法會在使用者介面自動化控件模式與 Microsoft Active Accessibility 方法之間重疊。 在這些情況下,必須實作這兩者。 例如,Microsoft Active Accessibility IAccessible::get_accValueIAccessible::p ut_accValue 方法都必須實作,UI 自動化IRangeValueProvider::ValueIRangeValueProvider::SetValue 方法也必須實作。 在內部,實作可以共用這些程序代碼。 實作這兩個集合的需求可避免有模式介面的部分實作,同時保留現有 Microsoft Active Accessibility 用戶端可使用的 IAccessible 介面。

當控件具有以下其中一個角色時,不需要下列UI自動化控制件模式;否則,如果相關,應該明確支持它們。

UI 自動化控制件模式 Microsoft作用中輔助功能角色
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 ROLE_SYSTEM_TEXT (非只讀時),ROLE_SYSTEM_PROGRESSBARROLE_SYSTEM_COMBOBOX,以及 accValue 屬性值未 NULL時的任何其他角色。
WindowPattern 最上層 Microsoft Win32 HWND自動支援。

 

UI 自動化屬性的 WinEvents 已變更事件

除了針對 IAccessible定義的事件之外,也會定義下列事件標識碼,而且可以搭配 IAccessibleEx 實作搭配使用,做為對應 UI 自動化屬性的屬性變更事件。 這些會使用與針對 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 介面