Поделиться через


модель автоматизации пользовательского интерфейса и активные специальные возможности

Microsoft Active Accessibility — это устаревший API, который был представлен в Windows 95 и предназначен для обеспечения доступности приложений Windows. Корпорация Майкрософт модель автоматизации пользовательского интерфейса — это новая модель специальных возможностей для Windows, предназначенная для решения потребностей вспомогательных технологий и автоматизированных средств тестирования. модель автоматизации пользовательского интерфейса предлагает множество улучшений по сравнению со специальными возможностями Microsoft Active. В этом разделе описываются различия между двумя технологиями.

Эта тема описана в следующих разделах.

Языки программирования

Microsoft Active Специальные возможности основаны на объектной модели компонента (COM) с поддержкой двух интерфейсов и, следовательно, программируются на языках C/C++ и скриптов.

При внедрении модель автоматизации пользовательского интерфейса клиентский API был ограничен управляемым кодом, а API поставщика включал как управляемые, так и неуправляемые реализации. В Windows 7 появился новый КЛИЕНТСКИй API на основе COM, чтобы упростить программу модель автоматизации пользовательского интерфейса клиентских приложений в C/C++.

Серверы и клиенты

В Microsoft Active Accessibility серверы и клиенты взаимодействуют напрямую через реализацию сервера интерфейса IAccess .

В модель автоматизации пользовательского интерфейса основная служба находится между сервером (поставщиком) и клиентом. Основная служба вызывает интерфейсы, реализованные поставщиками, и предоставляет дополнительные службы, такие как создание уникальных идентификаторов времени выполнения для элементов пользовательского интерфейса. Клиентские приложения получают доступ к этой основной службе, создавая объект CUIAutomation . Этот объект поддерживает набор клиентских интерфейсов, которые отделены от интерфейсов поставщика. Дополнительные сведения см. в разделе "Создание объекта CUIAutomation".

модель автоматизации пользовательского интерфейса поставщики могут предоставлять сведения клиентам Microsoft Active Accessibility, а серверы активных специальных возможностей Майкрософт могут предоставлять сведения для модель автоматизации пользовательского интерфейса клиентских приложений. Однако, поскольку microsoft Active Accessibility не предоставляет столько сведений, сколько модель автоматизации пользовательского интерфейса, две модели не полностью совместимы.

Элементы пользовательского интерфейса

Microsoft Active Accessibility представляет элемент пользовательского интерфейса как интерфейс IAccessible , связанный с дочерним идентификатором. Трудно сравнить два указателя IAccessible , чтобы определить, ссылаются ли они на один и тот же элемент.

В модель автоматизации пользовательского интерфейса каждый элемент представляется как объект, предоставляющий интерфейс IUIAutomationElement клиентам. Элементы можно сравнить с помощью идентификаторов времени выполнения, которые извлекаются с помощью IUIAutomationElement::GetRuntimeId.

Представления в виде дерева и навигация

Элементы пользовательского интерфейса на экране можно рассматривать как структуру дерева с рабочим столом в качестве корневого, окна приложений как непосредственные дочерние элементы и элементы в приложениях в качестве последующих потомков.

В Microsoft Active Accessibility многие элементы пользовательского интерфейса, которые не относятся к конечным пользователям, предоставляются в структуре дерева. Клиентские приложения должны проверять все элементы в дереве, чтобы определить, какие элементы являются значимыми.

модель автоматизации пользовательского интерфейса клиентские приложения видят пользовательский интерфейс через отфильтрованное представление. Представление содержит только элементы, которые предоставляют пользователю информацию или с которым пользователь может взаимодействовать. Предопределенные представления, включающие только элементы управления и доступны только элементы содержимого, и клиентские приложения могут определять пользовательские представления. модель автоматизации пользовательского интерфейса упрощает описание пользовательского интерфейса пользователю и помогает пользователю взаимодействовать с приложениями.

В Microsoft Active Accessibility навигация между элементами является пространственной, например переход к элементу, который находится слева на экране, логическим, например переход к следующему элементу меню или следующему элементу в порядке вкладок в диалоговом окне или иерархическим, например переход к первому дочернему элементу в контейнере или из дочернего элемента в родительский элемент. Иерархическая навигация усложняется тем, что дочерние элементы не всегда являются объектами, реализующими IAccessible.

В модель автоматизации пользовательского интерфейса все элементы пользовательского интерфейса — это COM-объекты, предоставляющие интерфейс IUIAutomationElement и поддерживающие те же основные функциональные возможности. С точки зрения поставщика COM-объекты реализуют интерфейс, унаследованный от IRawElementProviderSimple. Навигация в основном иерархическая; то есть от родителей до детей, и от одного брата до следующего. Однако навигация между братьями и сестрами имеет логический элемент, так как он может следовать за порядком вкладок. Клиент может перемещаться из любой начальной точки, используя любое отфильтрованное представление дерева с помощью IUIAutomationTreeWalker. Клиент также может переходить к определенным детям или потомкам с помощью IUIAutomationElement::FindFirst и IUIAutomationElement::FindAll. Например, легко получить все элементы в диалоговом окне, поддерживающие указанный шаблон элемента управления.

Навигация в модель автоматизации пользовательского интерфейса более согласована, чем в microsoft Active Accessibility. Некоторые элементы, такие как раскрывающиеся списки и всплывающие окна, отображаются дважды в дереве специальных возможностей Майкрософт, а навигация из этих элементов может иметь непредвиденные результаты. Трудно правильно реализовать специальные возможности Microsoft Active Для элемента управления перекладином. модель автоматизации пользовательского интерфейса обеспечивает повторную и перепозицию, чтобы элемент можно было разместить в любом месте дерева, несмотря на иерархию, наложенную владением окнами.

Роли и типы элементов управления

Microsoft Active Accessibility использует свойство accRole (IAccessible::get_accRole) для получения описания роли элемента в пользовательском интерфейсе, например ROLE_SYSTEM_SLIDER или ROLE_SYSTEM_MENUITEM. Роль элемента — это основной ключ к его доступным функциональным возможностям. Взаимодействие с элементом управления достигается с помощью фиксированных методов, таких как IAccessible::accSelect и IAccessible::accDoDefaultAction. Взаимодействие между клиентским приложением и пользовательским интерфейсом ограничено тем, что можно сделать с помощью IAccessible.

В отличие от этого, модель автоматизации пользовательского интерфейса отделяет тип элемента управления, описываемый свойством IUIAutomationElement::CurrentControlType (или IUIAutomationElement::CachedControlType) от ожидаемой функциональности. Функциональность определяется шаблонами элементов управления, которые поддерживаются поставщиком через его реализацию специализированных интерфейсов. Шаблоны элементов управления можно объединить, чтобы описать полный набор функциональных возможностей, поддерживаемых определенным элементом пользовательского интерфейса. Для поддержки определенного шаблона элемента управления требуются некоторые поставщики. Например, поставщик флажка должен поддерживать шаблон элемента управления Toggle . Для поддержки одного или нескольких шаблонов элементов управления требуются другие поставщики. Например, кнопка должна поддерживать переключатель или шаблон элемента управления Invoke . Тем не менее другие не поддерживают шаблоны элементов управления. Например, панель, которая не может быть перемещена, изменена или закреплена, не имеет шаблонов элементов управления.

модель автоматизации пользовательского интерфейса поддерживает пользовательские элементы управления, которые определяются UIA_CustomControlTypeId константы и могут быть описаны свойством IUIAutomationElement::CurrentLocalizedControlType (или IUIAutomationElement::CachedLocalizedControlType).

В следующей таблице перечислены роли объектов Microsoft Active Accessibility с модель автоматизации пользовательского интерфейса типами элементов управления.

Роль "Активные специальные возможности" тип элемента управления модель автоматизации пользовательского интерфейса
ROLE_SYSTEM_PUSHBUTTON Кнопка
ROLE_SYSTEM_CLIENT Календарь
ROLE_SYSTEM_CHECKBUTTON CheckBox
ROLE_SYSTEM_COMBOBOX ComboBox
ROLE_SYSTEM_CLIENT См . типы пользовательских элементов управления.
ROLE_SYSTEM_LIST DataGrid
ROLE_SYSTEM_LISTITEM DataItem
ROLE_SYSTEM_DOCUMENT Документ
ROLE_SYSTEM_TEXT Изменить
ROLE_SYSTEM_GROUPING Групповое
ROLE_SYSTEM_LIST Верхний колонтитул
ROLE_SYSTEM_COLUMNHEADER HeaderItem
ROLE_SYSTEM_LINK Гиперссылка
ROLE_SYSTEM_GRAPHIC Изображение
ROLE_SYSTEM_LIST Список
ROLE_SYSTEM_LISTITEM ListItem
ROLE_SYSTEM_MENUPOPUP Menu
ROLE_SYSTEM_MENUBAR MenuBar
ROLE_SYSTEM_MENUITEM MenuItem
ROLE_SYSTEM_PANE навигации
ROLE_SYSTEM_PROGRESSBAR ProgressBar
ROLE_SYSTEM_RADIOBUTTON RadioButton
ROLE_SYSTEM_SCROLLBAR ScrollBar
ROLE_SYSTEM_SEPARATOR Separator
ROLE_SYSTEM_SLIDER Ползунок
ROLE_SYSTEM_SPINBUTTON Вертушка
ROLE_SYSTEM_SPLITBUTTON SplitButton
ROLE_SYSTEM_STATUSBAR StatusBar
ROLE_SYSTEM_PAGETABLIST Вкладка
ROLE_SYSTEM_PAGETAB TabItem
ROLE_SYSTEM_TABLE Таблицу
ROLE_SYSTEM_STATICTEXT Текст
ROLE_SYSTEM_INDICATOR Thumb
ROLE_SYSTEM_TITLEBAR TitleBar
ROLE_SYSTEM_TOOLBAR ToolBar
ROLE_SYSTEM_TOOLTIP ToolTip
ROLE_SYSTEM_OUTLINE Дерево
ROLE_SYSTEM_OUTLINEITEM TreeItem
ROLE_SYSTEM_WINDOW Window

 

Состояния и свойства

Элементы Microsoft Active Accessibility поддерживают общий набор свойств. Некоторые свойства, такие как accState, должны описывать различные условия в зависимости от роли элемента. Серверы должны реализовать все методы IAccess , возвращающие свойство, даже те свойства, которые не относятся к элементу.

модель автоматизации пользовательского интерфейса определяет дополнительные свойства, некоторые из которых соответствуют состояниям в Microsoft Active Accessibility. Некоторые свойства являются общими для всех элементов, но другие свойства относятся к типам элементов управления и шаблонам элементов управления. Поставщик модель автоматизации пользовательского интерфейса не должен реализовывать неуместные свойства, но может возвращать значение NULL для любых свойств, которые он не поддерживает. Основная служба модель автоматизации пользовательского интерфейса может получить некоторые свойства от поставщика окон по умолчанию, и они являются амальгаматированы с свойствами, явно реализованными поставщиком.

Кроме того, кроме поддержки многих дополнительных свойств, модель автоматизации пользовательского интерфейса обеспечивает более высокую производительность, позволяя кэшировать свойства.

В следующей таблице показано соответствие некоторых свойств в двух моделях. Описание идентификаторов свойств модель автоматизации пользовательского интерфейса см. в разделе "Идентификаторы свойств элемента автоматизации".

Метод доступа к свойству Active Accessibility идентификатор свойства модель автоматизации пользовательского интерфейса Замечания
get_accKeyboardShortcut UIA_AccessKeyPropertyId или UIA_AcceleratorKeyPropertyId UIA_AccessKeyPropertyId имеет приоритет, если оба присутствуют.
get_accName UIA_NamePropertyId
get_accRole UIA_ControlTypePropertyId См. предыдущую таблицу для сопоставления ролей с типами элементов управления.
get_accValue UIA_ValueValuePropertyId или UIA_RangeValueValuePropertyId Допустимо только для типов элементов управления, поддерживающих IUIAutomationValuePattern или IUIAutomationRangeValuePattern. Значения диапазона нормализуются до 0–100, чтобы соответствовать поведению Microsoft Active Accessibility. Значения представлены в виде строк.
get_accHelp UIA_HelpTextPropertyId
accLocation UIA_BoundingRectanglePropertyId
get_accDescription Не поддерживается. accDescription не имеет четкой спецификации в Microsoft Active Accessibility, что привело к тому, что серверы помещали различные фрагменты информации в этом свойстве.
get_accHelpTopic Не поддерживается.

 

В следующей таблице показаны идентификаторы свойств модель автоматизации пользовательского интерфейса, которые соответствуют константам состояния объекта Microsoft Active Accessibility.

Активное состояние специальных возможностей свойство модель автоматизации пользовательского интерфейса Активирует изменение состояния WinEvent?
STATE_SYSTEM_CHECKED UIA_ToggleToggleStatePropertyId для флажка. UIA_SelectionItemIsSelectedPropertyId для переключателя. Y
STATE_SYSTEM_COLLAPSED UIA_ExpandCollapseExpandCollapseStatePropertyId (значение = ExpandCollapseState_Collapsed). Y
STATE_SYSTEM_EXPANDED UIA_ExpandCollapseExpandCollapseStatePropertyId (значение = ExpandCollapseState_Expanded или ExpandCollapseState_PartiallyExpanded). Y
STATE_SYSTEM_FOCUSABLE UIA_IsKeyboardFocusablePropertyId. N
STATE_SYSTEM_FOCUSED UIA_HasKeyboardFocusPropertyId. N
STATE_SYSTEM_HASPOPUP UIA_ExpandCollapseExpandCollapseStatePropertyId для элементов меню. N
STATE_SYSTEM_INVISIBLE UIA_IsOffscreenPropertyId (значение = True и IUIAutomationElement::GetClickablePoint завершается ошибкой). N
STATE_SYSTEM_LINKED UIA_ControlTypePropertyId (значение = UIA_HyperlinkControlTypeId). N
STATE_SYSTEM_MIXED UIA_ToggleToggleStatePropertyId (значение = ToggleState_Indeterminate. N
STATE_SYSTEM_MOVEABLE UIA_TransformCanMovePropertyId. N
STATE_SYSTEM_MULTISELECTABLE UIA_SelectionCanSelectMultiplePropertyId. N
STATE_SYSTEM_OFFSCREEN UIA_IsOffscreenPropertyId. N
STATE_SYSTEM_PROTECTED UIA_IsPasswordPropertyId. N
STATE_SYSTEM_READONLY UIA_RangeValueIsReadOnlyPropertyId и UIA_ValueIsReadOnlyPropertyId. N
STATE_SYSTEM_SELECTABLE UIA_IsSelectionItemPatternAvailablePropertyId . N
STATE_SYSTEM_SELECTED UIA_SelectionItemIsSelectedPropertyId. N
STATE_SYSTEM_SIZEABLE UIA_TransformCanResizePropertyId. N
STATE_SYSTEM_UNAVAILABLE UIA_IsEnabledPropertyId. Y

 

Полный список идентификаторов свойств см. в разделе "Идентификаторы свойств".

События

В отличие от специальных возможностей Microsoft Active, механизм событий в модель автоматизации пользовательского интерфейса, не зависит от маршрутизации событий Windows, которая тесно связана с дескрипторами окон и не требует клиентского приложения для настройки перехватчиков. Подписки на события можно точно настроить на определенные части дерева, а не только на определенные события. Поставщики также могут точно настраивать события, отслеживая, какие события прослушиваются.

Кроме того, клиенты могут получить элементы, которые вызывают события, так как они передаются непосредственно обратному вызову события. Свойства элемента автоматически извлекаются, если запрос кэша был предоставлен при подписке клиента на событие.

В следующей таблице показаны константы событий Microsoft Active Accessibility и идентификаторы событий модель автоматизации пользовательского интерфейса.

WinEvent идентификатор события модель автоматизации пользовательского интерфейса
EVENT_OBJECT_ACCELERATORCHANGE изменение свойства UIA_AcceleratorKeyPropertyId.
EVENT_OBJECT_CONTENTSCROLLED изменение свойства UIA_ScrollVerticalScrollPercentPropertyId или UIA_ScrollHorizontalScrollPercentPropertyId на связанных полосах прокрутки.
EVENT_OBJECT_CREATE UIA_StructureChangedEventId.
EVENT_OBJECT_DEFACTIONCHANGE Эквивалент отсутствует.
EVENT_OBJECT_DESCRIPTIONCHANGE Нет точного эквивалента; Возможно, изменение свойства UIA_HelpTextPropertyId или UIA_LocalizedControlTypePropertyId .
EVENT_OBJECT_DESTROY UIA_StructureChangedEventId.
EVENT_OBJECT_FOCUS UIA_AutomationFocusChangedEventId.
EVENT_OBJECT_HELPCHANGE UIA_HelpTextPropertyId изменения.
EVENT_OBJECT_HIDE UIA_StructureChangedEventId.
EVENT_OBJECT_LOCATIONCHANGE изменение свойства UIA_BoundingRectanglePropertyId.
EVENT_OBJECT_NAMECHANGE изменение свойства UIA_NamePropertyId.
EVENT_OBJECT_PARENTCHANGE UIA_StructureChangedEventId.
EVENT_OBJECT_REORDER Не всегда используется в microsoft Active Accessibility. В модель автоматизации пользовательского интерфейса не определено непосредственно соответствующее событие.
EVENT_OBJECT_SELECTION UIA_SelectionItem_ElementSelectedEventId.
EVENT_OBJECT_SELECTIONADD UIA_SelectionItem_ElementAddedToSelectionEventId.
EVENT_OBJECT_SELECTIONREMOVE UIA_SelectionItem_ElementRemovedFromSelectionEventId.
EVENT_OBJECT_SELECTIONWITHIN Эквивалент отсутствует.
EVENT_OBJECT_SHOW UIA_StructureChangedEventId.
EVENT_OBJECT_STATECHANGE Различные события, изменяемые свойством.
EVENT_OBJECT_VALUECHANGE изменены UIA_RangeValueValuePropertyId и UIA_ValueValuePropertyId.
EVENT_SYSTEM_ALERT Эквивалент отсутствует.
EVENT_SYSTEM_CAPTUREEND Эквивалент отсутствует.
EVENT_SYSTEM_CAPTURESTART Эквивалент отсутствует.
EVENT_SYSTEM_CONTEXTHELPEND Эквивалент отсутствует.
EVENT_SYSTEM_CONTEXTHELPSTART Эквивалент отсутствует.
EVENT_SYSTEM_DIALOGEND UIA_Window_WindowClosedEventId.
EVENT_SYSTEM_DIALOGSTART UIA_Window_WindowOpenedEventId.
EVENT_SYSTEM_DRAGDROPEND Эквивалент отсутствует.
EVENT_SYSTEM_DRAGDROPSTART Эквивалент отсутствует.
EVENT_SYSTEM_FOREGROUND UIA_AutomationFocusChangedEventId.
EVENT_SYSTEM_MENUEND UIA_MenuModeEndEventId.
EVENT_SYSTEM_MENUPOPUPEND UIA_MenuClosedEventId.
EVENT_SYSTEM_MENUPOPUPSTART UIA_MenuOpenedEventId.
EVENT_SYSTEM_MENUSTART UIA_MenuModeStartEventId.
EVENT_SYSTEM_MINIMIZEEND изменение свойства UIA_WindowWindowVisualStatePropertyId.
EVENT_SYSTEM_MINIMIZESTART изменение свойства UIA_WindowWindowVisualStatePropertyId.
EVENT_SYSTEM_MOVESIZEEND изменение свойства UIA_BoundingRectanglePropertyId.
EVENT_SYSTEM_MOVESIZESTART изменение свойства UIA_BoundingRectanglePropertyId.
EVENT_SYSTEM_SCROLLINGEND изменение свойства UIA_ScrollVerticalScrollPercentPropertyId или UIA_ScrollHorizontalScrollPercentPropertyId.
EVENT_SYSTEM_SCROLLINGSTART изменение свойства UIA_ScrollVerticalScrollPercentPropertyId или UIA_ScrollHorizontalScrollPercentPropertyId.
EVENT_SYSTEM_SOUND Эквивалент отсутствует.
EVENT_SYSTEM_SWITCHEND Нет эквивалента , но событие UIA_AutomationFocusChangedEventId сигнализирует о том, что новое приложение получило фокус.
EVENT_SYSTEM_SWITCHSTART Эквивалент отсутствует.
Эквивалент отсутствует. изменение свойства UIA_MultipleViewCurrentViewPropertyId.
Эквивалент отсутствует. изменение свойства UIA_ScrollHorizontallyScrollablePropertyId.
Эквивалент отсутствует. изменение свойства UIA_ScrollVerticallyScrollablePropertyId.
Эквивалент отсутствует. изменение свойства UIA_ScrollHorizontalScrollPercentPropertyId.
Эквивалент отсутствует. UIA_ScrollVerticalScrollPercentPropertyId изменение свойства.
Эквивалент отсутствует. изменение свойства UIA_ScrollHorizontalViewSizePropertyId.
Эквивалент отсутствует. изменение свойства UIA_ScrollVerticalViewSizePropertyId.
Эквивалент отсутствует. изменение свойства UIA_ToggleToggleStatePropertyId.
Эквивалент отсутствует. изменение свойства UIA_WindowWindowVisualStatePropertyId
Эквивалент отсутствует. событие UIA_AsyncContentLoadedEventId.
Эквивалент отсутствует. событие UIA_ToolTipOpenedEventId.

 

Доступ к активным свойствам и объектам специальных возможностей из модель автоматизации пользовательского интерфейса

Ключевой особенностью модель автоматизации пользовательского интерфейса, недоступной в Microsoft Active Accessibility, является возможность получения нескольких свойств с помощью одной межпроцессной операции.

Существующие клиенты Microsoft Active Accessibility могут воспользоваться этой возможностью с помощью интерфейса IUIAutomationLegacyIAccessPattern. Этот интерфейс представляет шаблон элемента управления, предоставляющий свойства и методы Microsoft Active Специальные возможности для элементов пользовательского интерфейса. При извлечении элементов приложение может запросить, чтобы этот шаблон элемента управления и его свойства кэшировались.

IUIAutomationLegacyIAccessPattern также позволяет клиентам получать свойства Microsoft Active Accessibility из элементов, у которых нет собственной поддержки IAccess.

Изменения свойств IUIAutomationLegacyIAccessiblePattern не вызывают модель автоматизации пользовательского интерфейса событий.

Добавление функций модель автоматизации пользовательского интерфейса на активные серверы специальных возможностей

Общие сведения о дереве модели автоматизации пользовательского интерфейса

Общие сведения о свойствах модели автоматизации пользовательского интерфейса

Общие сведения о типах элементов управления автоматизации пользовательского интерфейса

Общие сведения о событиях модели автоматизации пользовательского интерфейса

Специальные возможности Microsoft Active