附录 G:活动辅助功能桥到UI 自动化

本附录包含有关 Microsoft Active Accessibility Bridge 的信息。 Active Accessibility Bridge 使实现 Microsoft Active Accessibility 的应用程序能够访问实现 Microsoft UI 自动化的应用程序。 通过将 Microsoft Active Accessibility 和UI 自动化连接在一起,基于 Microsoft Active Accessibility 的客户端(例如 Windows XP 上的屏幕阅读器)可以编程方式与基于UI 自动化的UI 自动化提供程序(例如Windows Presentation Foundation (WPF) 应用程序)进行交互。 它是 UI 自动化 Native Core API (UIAutomationCore.dll) 的一部分。

主动辅助功能桥将UI 自动化属性和事件映射到 Microsoft Active Accessibility 的属性和事件。 下表将 Microsoft Active Accessibility IAccessible 接口方法和属性映射到UI 自动化。 使用这些表来确定开发基于 Microsoft Active Accessibility 的客户端的相应编码做法。

IAccessible 属性 UI 自动化属性
get_accChild 未实现
get_accChildCount 派生自 UI 自动化 树
get_accParent 派生自 UI 自动化 树
accNavigate 未实现

 

描述性属性和方法

IAccessible UI 自动化
accDoDefaultAction 有关详细信息,请参阅控件类型和 accRole 表。
get_accDefaultAction 有关详细信息,请参阅控件类型和 accRole 表。
get_accKeyboardShortcut AccessKeyPropertyor AcceleratorKeyProperty;如果两者都存在,则 AccessKeyProperty 优先。
get_accName NameProperty
get_accRole ControlTypeProperty。 有关详细信息,请参阅控件类型和 accRole 表。
get_accState 有关详细信息,请参阅控件类型和 accRole 表。
get_accValue ValueProperty;在支持 Value 控件模式或 RangeValue 控件模式控件模式的控件类型上受支持。 RangeValue 值与 Microsoft Active Accessibility 行为 (0 到 100) 一致。 值项使用一个字符串。
put_accValue ValueProperty;在支持 Value 控件模式或 RangeValue 控件模式的控件类型上受支持
get_accHelp HelpTextProperty
get_accDescription 未实现
get_accHelpTopic 未实现

 

控件类型和 accRole

Microsoft Active Accessibility 默认角色为 ROLE_SYSTEM_CLIENT。 如果未找到控件类型的默认操作,则活动辅助功能桥还将使用以下可用控件模式: InvokeExpandCollapseToggle。 例如,groupbox 控件没有默认操作。 如果它支持 ExpandCollapse,则活动辅助功能网桥将使用该桥进行默认操作。

UI 自动化控件类型 accRole 默认操作
Button ROLE_SYSTEM_PUSHBUTTON 请按
日历 ROLE_SYSTEM_CLIENT
CheckBox ROLE_SYSTEM_CHECKBUTTON 选中/取消选中 (切换)
ComboBox ROLE_SYSTEM_COMBOBOX
自定义 ROLE_SYSTEM_CLIENT
DataGrid ROLE_SYSTEM_LIST
DataItem ROLE_SYSTEM_LISTITEM
Document ROLE_SYSTEM_DOCUMENT
编辑 ROLE_SYSTEM_TEXT
ROLE_SYSTEM_GROUPING
标头 ROLE_SYSTEM_LIST
HeaderItem ROLE_SYSTEM_COLUMNHEADER 单击
超链接 ROLE_SYSTEM_LINK 将 (映射跳转到 Invoke)
图像 ROLE_SYSTEM_GRAPHIC
列表 ROLE_SYSTEM_LIST
ListItem ROLE_SYSTEM_LISTITEM 双击
菜单 ROLE_SYSTEM_MENUPOPUP
MenuBar ROLE_SYSTEM_MENUBAR
MenuItem ROLE_SYSTEM_MENUITEM 对于具有子项的菜单项,执行或打开/关闭。
窗格 ROLE_SYSTEM_PANE
ProgressBar ROLE_SYSTEM_PROGRESSBAR
RadioButton ROLE_SYSTEM_RADIOBUTTON 检查
滚动条 ROLE_SYSTEM_SCROLLBAR
滑块 ROLE_SYSTEM_SLIDER
Spinner ROLE_SYSTEM_SPINBUTTON
SplitButton ROLE_SYSTEM_SPLITBUTTON
StatusBar ROLE_SYSTEM_STATUSBAR
选项卡 ROLE_SYSTEM_PAGETABLIST
TabItem ROLE_SYSTEM_PAGETAB 交换机
ROLE_SYSTEM_TABLE
文本 ROLE_SYSTEM_STATICTEXT
Thumb ROLE_SYSTEM_INDICATOR
标题栏 ROLE_SYSTEM_TITLEBAR
工具栏 ROLE_SYSTEM_TOOLBAR
ToolTip ROLE_SYSTEM_TOOLTIP
ROLE_SYSTEM_OUTLINE
TreeItem ROLE_SYSTEM_OUTLINEITEM 展开或折叠
窗口 ROLE_SYSTEM_WINDOW

 

UI 自动化属性和 accState

accState UI 自动化属性 触发状态更改
STATE_SYSTEM_CHECKED 对于 ControlType = “checkbox”,请使用 ToggleState.On。 对于“radiobutton”,请使用 SelectionItemPattern::IsSelected
STATE_SYSTEM_FOCUSABLE IsKeyboardFocusableProperty
STATE_SYSTEM_FOCUSED HasKeyboardFocusProperty
STATE_SYSTEM_PROTECTED IsPasswordProperty
STATE_SYSTEM_READONLY IsReadOnlyProperty (Value 控件模式和 RangeValue 控件模式)
STATE_SYSTEM_UNAVAILABLE IsEnabledProperty
STATE_SYSTEM_LINKED ControlTypeProperty = “hyperlink”
STATE_SYSTEM_SELECTABLE 支持 SelectionItemPattern
STATE_SYSTEM_SELECTED IsSelectedProperty (SelectionItem 控件模式)
STATE_SYSTEM_COLLAPSED ExpandCollapseState = Collapsed
STATE_SYSTEM_EXPANDED ExpandCollapseState = Expanded 或 PartiallyExpanded
STATE_SYSTEM_HASPOPUP 支持展开/折叠的菜单项
STATE_SYSTEM_MIXED ToggleState = 不确定
STATE_SYSTEM_SIZEABLE IUIAutomationTransformPattern::CanResize
STATE_SYSTEM_MOVEABLE IUIAutomationTransformPattern::CanMove
STATE_SYSTEM_MULTISELECTABLE IUIAutomationSelectionPattern::CanSelectMultiple

 

选择和焦点

IAccessible UI 自动化
get_accFocus IUIAutomation::FocusedElement
accSelect 有关详细信息,请参阅UI 自动化属性和 accSelect SELFLAGs 表。
get_accSelection SelectionPattern::GetSelection

 

UI 自动化属性和 accSelect SELFLAG

accSelect SELFLAGs UI 自动化属性
SELFLAG_NONE 不可用
SELFLAG_TAKFOCUS IUIAutomationElement::SetFocus
SELFLAG_TAKESELECTION IUIAutomationSelectionItemPattern::Select
SELFLAG_ADDSELECTION IUIAutomationSelectionItemPattern::AddToSelection
SELFLAG_TAKEREMOVESELECTION IUIAutomationSelectionItemPattern::RemoveFromSelection
SELFLAG_EXTENDSELECTION 不可用

 

空间映射

IAccessible UI 自动化
accLocation BoundingRectangleProperty
accHitTest IRawElementProviderFragmentRoot::ElementProviderFromPoint

 

事件

System-Level事件常量 UI 自动化
EVENT_SYSTEM_MENUPOPUPSTART UIA_MenuOpenedEventId (注意:如果这是弹出窗口,则必须检查。)
EVENT_SYSTEM_MENUPOPUPEND UIA_MenuClosedEventId
EVENT_SYSTEM_MENUSTART UIA_MenuModeStartEventId
EVENT_SYSTEM_MENUEND UIA_MenuModeEndEventId
EVENT_SYSTEM_SOUND
EVENT_SYSTEM_ALERT
EVENT_SYSTEM_CAPTURESTART
EVENT_SYSTEM_CAPTUREEND
EVENT_SYSTEM_DIALOGSTART
EVENT_SYSTEM_DIALOGEND
EVENT_SYSTEM_MOVESIZESTART
EVENT_SYSTEM_MOVESIZEEND
EVENT_SYSTEM_CONTEXTHELPSTART
EVENT_SYSTEM_CONTEXTHELPEND 不相关
EVENT_SYSTEM_DRAGDROPSTART
EVENT_SYSTEM_DRAGDROPEND
EVENT_SYSTEM_SWITCHSTART 不相关
EVENT_SYSTEM_SWITCHEND 不相关
EVENT_SYSTEM_MINIMIZESTART
EVENT_SYSTEM_MINIMIZEEND
EVENT_SYSTEM_FOREGROUND
EVENT_SYSTEM_SCROLLINGSTART 不可用
EVENT_SYSTEM_SCROLLINGEND 不可用

 

Object-Level事件常量 UI 自动化
EVENT_OBJECT_FOCUS AutomationFocusChangedEvent
EVENT_OBJECT_VALUECHANGE ValueProperty (Value 控件模式和 RangeValue 控件模式)
EVENT_OBJECT_SELECTION ElementSelectedEvent (SelectionItem 控件模式)
EVENT_OBJECT_SELECTIONADD ElementAddedToSelectionEvent (SelectionItem 控件模式)
EVENT_OBJECT_SELECTIONREMOVE ElementRemovedFromSelectionEvent
EVENT_OBJECT_SELECTIONWITHIN EventsSelectionInvalidatedEvent
EVENT_OBJECT_STATECHANGE 有关触发状态更改的状态,请参阅UI 自动化属性和 accState 表