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

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

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

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活动辅助功能行为(0 到 100)一致。 值项使用字符串。
put_accValue ValueProperty;支持 Value 控件模式或 RangeValue 控件模式的控件类型支持
get_accHelp HelpTextProperty
get_accDescription 未实现
get_accHelpTopic 未实现

 

控件类型和 accRole

Microsoft活动辅助功能默认角色 ROLE_SYSTEM_CLIENT。 如果未找到控件类型的默认作,活动辅助功能桥还将使用以下可用的控件模式:InvokeExpandCollapse,以及 Toggle。 例如,组框控件没有默认作。 如果它支持 ExpandCollapse,则活动辅助功能桥将使用该桥进行默认作。

UI 自动化控件类型 accRole 默认作
按钮 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 没有
文档 ROLE_SYSTEM_DOCUMENT 没有
编辑 ROLE_SYSTEM_TEXT 没有
ROLE_SYSTEM_GROUPING 没有
标头 ROLE_SYSTEM_LIST 没有
HeaderItem ROLE_SYSTEM_COLUMNHEADER 点击
超链接 ROLE_SYSTEM_LINK 跳转(映射到调用)
图像 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 检查
ScrollBar ROLE_SYSTEM_SCROLLBAR 没有
滑块 ROLE_SYSTEM_SLIDER 没有
微调器 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 没有
TitleBar ROLE_SYSTEM_TITLEBAR 没有
ToolBar ROLE_SYSTEM_TOOLBAR 没有
工具提示 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 (值控件模式和 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 = Expand 或 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 SELFLAG 表。
get_accSelection SelectionPattern::GetSelection

 

UI 自动化属性和 accSelect SELFLAG

accSelect SELFLAG 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 (值控件模式和 RangeValue 控件模式)
EVENT_OBJECT_SELECTION ElementSelectedEvent (SelectionItem 控件模式)
EVENT_OBJECT_SELECTIONADD ElementAddedToSelectionEvent (SelectionItem 控件模式)
EVENT_OBJECT_SELECTIONREMOVE ElementRemovedFromSelectionEvent
EVENT_OBJECT_SELECTIONWITHIN EventsSelectionInvalidatedEvent
EVENT_OBJECT_STATECHANGE 有关触发状态更改的状态,请参阅 UI 自动化属性和 accState 表