附录 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。 如果未找到控件类型的默认操作,则活动辅助功能桥还将使用以下可用控件模式: Invoke、 ExpandCollapse 和 Toggle。 例如,groupbox 控件没有默认操作。 如果它支持 ExpandCollapse,则活动辅助功能网桥将使用该桥进行默认操作。
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 |
事件
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 表 |