Appendix G: Active Accessibility Bridge to UI Automation

This appendix contains information about the Microsoft Active Accessibility Bridge. The Active Accessibility Bridge enables applications that implement Active Accessibility to access applications that implement UI Automation. By bridging Active Accessibility and UI Automation together, Active Accessibility-based clients, such as a screenreader on Windows XP, can programmatically interact with UI Automation-based providers of UI information, such as a Windows Presentation Foundation application. It is part of the UI Automation Native Core API (UIAutomationCore.dll).

The Active Accessibility Bridge maps UI Automation properties and events to those of Active Accessibility. The following tables map the Active Accessibility IAccessible interface methods and properties to UI Automation. Use these tables to determine appropriate coding practices for developing your Active Accessibility-based client.

Navigation and Hierarchy Properties

IAccessible property UI Automation property
get_accChild Not implemented
get_accChildCount Derived from UI Automation tree
get_accParent Derived from UI Automation tree
accNavigate Not implemented

Descriptive Properties and Methods

IAccessible UI Automation
accDoDefaultAction See the Control Type and accRole table for details.
get_accDefaultAction See the Control Type and accRole table for details.
get_accKeyboardShortcut AccessKeyProperty or AcceleratorKey; if both present, AccessKey takes precedence.
get_accName NameProperty
get_accRole ControlTypeProperty. See the Control Type and accRole table for details.
get_accState See the Control Type and accRole table for details.
get_accValue ValueProperty; supported on control types that support ValuePattern or RangeValuePattern. RangeValue values are consistent with Active Accessibility behavior (0 to 100). Value items use a string.
put_accValue ValueProperty; supported on control types that supports ValuePattern or RangeValuePattern
get_accHelp HelpTextProperty
get_accDescription Not implemented
get_accHelpTopic Not implemented

Control Types and accRole

The Active Accessibility default role is ROLE_SYSTEM_CLIENT. If no default action is found for a control type, the Active Accessibility Bridge will also use the following available patterns: Invoke, ExpandCollapse, and Toggle. For example, a groupbox control has no default action. If it supports ExpandCollapse, then the Active Accessibility Bridge will use that for the default action.

UI Automation control type accRole Default action
Button ROLE_SYSTEM_PUSHBUTTON Press
Calendar ROLE_SYSTEM_CLIENT None
CheckBox ROLE_SYSTEM_CHECKBUTTON Check/Uncheck (toggle)
ComboBox ROLE_SYSTEM_COMBOBOX None
Custom ROLE_SYSTEM_CLIENT None
DataGrid ROLE_SYSTEM_LIST None
DataItem ROLE_SYSTEM_LISTITEM None
Document ROLE_SYSTEM_DOCUMENT None
Edit ROLE_SYSTEM_TEXT None
Group ROLE_SYSTEM_GROUPING None
Header ROLE_SYSTEM_LIST None
HeaderItem ROLE_SYSTEM_COLUMNHEADER Click
Hyperlink ROLE_SYSTEM_LINK Jump (maps to Invoke)
Image ROLE_SYSTEM_GRAPHIC None
List ROLE_SYSTEM_LIST None
ListItem ROLE_SYSTEM_LISTITEM Double click
Menu ROLE_SYSTEM_MENUPOPUP None
MenuBar ROLE_SYSTEM_MENUBAR None
MenuItem ROLE_SYSTEM_MENUITEM Execute or Open/Close for menu items that have children.
Pane ROLE_SYSTEM_PANE None
ProgressBar ROLE_SYSTEM_PROGRESSBAR None
RadioButton ROLE_SYSTEM_RADIOBUTTON Check
ScrollBar ROLE_SYSTEM_SCROLLBAR None
Slider ROLE_SYSTEM_SLIDER None
Spinner ROLE_SYSTEM_SPINBUTTON None
SplitButton ROLE_SYSTEM_SPLITBUTTON None
StatusBar ROLE_SYSTEM_STATUSBAR None
Tab ROLE_SYSTEM_PAGETABLIST None
TabItem ROLE_SYSTEM_PAGETAB Switch
Table ROLE_SYSTEM_TABLE None
Text ROLE_SYSTEM_STATICTEXT None
Thumb ROLE_SYSTEM_INDICATOR None
TitleBar ROLE_SYSTEM_TITLEBAR None
ToolBar ROLE_SYSTEM_TOOLBAR None
ToolTip ROLE_SYSTEM_TOOLTIP None
Tree ROLE_SYSTEM_OUTLINE None
TreeItem ROLE_SYSTEM_OUTLINEITEM Expand or Collapse
Window ROLE_SYSTEM_WINDOW None

UI Automation Properties and accState

accState UI Automation property Triggers state change
STATE_SYSTEM_CHECKED For ControlType = "checkbox" use ToggleState.On. For "radiobutton" use SelectionItemPattern.IsSelected. Yes
STATE_SYSTEM_FOCUSABLE IsKeyboardFocusableProperty No
STATE_SYSTEM_FOCUSED HasKeyboardFocusProperty No
STATE_SYSTEM_PROTECTED IsPasswordProperty No
STATE_SYSTEM_READONLY IsReadOnlyPropery (ValuePattern and RangeValuePattern) No
STATE_SYSTEM_UNAVAILABLE IsEnabledProperty Yes
STATE_SYSTEM_LINKED ControlTypeProperty = "hyperlink" No
STATE_SYSTEM_SELECTABLE SelectionItemPattern is supported No
STATE_SYSTEM_SELECTED IsSelectedProperty (SelectionItemPattern) No
STATE_SYSTEM_COLLAPSED ExpandCollapseState = Collapsed Yes
STATE_SYSTEM_EXPANDED ExpandCollapseState = Expanded or PartiallyExpanded Yes
STATE_SYSTEM_HASPOPUP Menu items that support Expand/Collapse No
STATE_SYSTEM_MIXED ToggleState = Indeterminate No
STATE_SYSTEM_SIZEABLE TransformPattern.CanResize No
STATE_SYSTEM_MOVEABLE TransformPattern.CanMove No
STATE_SYSTEM_MULTISELECTABLE SelectionPattern.CanSelectMultiple No

Selection and Focus

IAccessible UI Automation
get_accFocus FocusedElement
accSelect See the UI Automation Properties and accSelect SELFLAGs table for details.
get_accSelection SelectionPattern.GetSelection

UI Automation Properties and accSelect SELFLAGs

accSelect SELFLAGs UI Automation property
SELFLAG_NONE Not available
SELFLAG_TAKFOCUS SetFocus
SELFLAG_TAKESELECTION SelectionItemPattern.Select
SELFLAG_ADDSELECTION SelectionItemPattern.AddToSelection
SELFLAG_TAKEREMOVESELECTION SelectionItemPattern.RemoveFromSelection
SELFLAG_EXTENDSELECTION Not available

Spatial Mapping

IAccessible UI Automation
accLocation BoundingRectangleProperty
accHitTest ElementProviderFromPoint

Events

System-Level Event Constants

UI Automation

EVENT_SYSTEM_MENUPOPUPSTART

MenuOpenedEvent (Note: Must check if this is a pop-up window.)

EVENT_SYSTEM_MENUPOPUPEND

MenuClosedEvent

EVENT_SYSTEM_MENUSTART

Not available

EVENT_SYSTEM_MENUEND

Not available

EVENT_SYSTEM_SOUND

Not available

EVENT_SYSTEM_ALERT

EVENT_SYSTEM_CAPTURESTART

Not relevant

EVENT_SYSTEM_CAPTUREEND

Not relevant

EVENT_SYSTEM_DIALOGSTART

Not available

EVENT_SYSTEM_DIALOGEND

Not available

EVENT_SYSTEM_MOVESIZESTART

EVENT_SYSTEM_MOVESIZEEND

EVENT_SYSTEM_CONTEXTHELPSTART

EVENT_SYSTEM_CONTEXTHELPEND

Not relevant

EVENT_SYSTEM_DRAGDROPSTART

EVENT_SYSTEM_DRAGDROPEND

EVENT_SYSTEM_SWITCHSTART

Not relevant

EVENT_SYSTEM_SWITCHEND

Not relevant

EVENT_SYSTEM_MINIMIZESTART

EVENT_SYSTEM_MINIMIZEEND

EVENT_SYSTEM_FOREGROUND

EVENT_SYSTEM_SCROLLINGSTART

Not available

EVENT_SYSTEM_SCROLLINGEND

Not available

Object-Level Event Constants UI Automation
EVENT_OBJECT_FOCUS AutomationFocusChangedEvent
EVENT_OBJECT_VALUECHANGE ValueProperty (ValuePattern and RangeValuePattern)
EVENT_OBJECT_SELECTION ElementSelectedEvent (SelectionItemPattern)
EVENT_OBJECT_SELECTIONADD ElementAddedToSelectionEvent (SelectionItemPattern)
EVENT_OBJECT_SELECTIONREMOVE ElementRemovedFromSelectionEvent
EVENT_OBJECT_STATECHANGE See UI Automation Properties and accState table for states that trigger a state change
EVENT_OBJECT_SELECTIONREMOVE ElementRemovedFromSelectionEvent