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


Рекомендации по реализации IAccessibleEx

Ядро службы автоматизации пользовательского интерфейса Майкрософт может получить все свойства microsoft Active Accessibility для любого доступного объекта, предоставляемого сервером, через интерфейс I Access. При реализации IAccessibleExнеобходимо предоставлять только те аспекты функциональности пользовательского интерфейса, которые не могут быть предоставлены через существующие свойства специальных возможностей Microsoft Active. В этом разделе определяются свойства и шаблоны автоматизации пользовательского интерфейса, представляющие функциональные возможности пользовательского интерфейса, которые не имеют аналогов в Microsoft Active Accessibility, — это свойства и шаблоны элементов управления, которые можно предоставить в реализации I AccessEx.

В этом разделе содержатся следующие разделы:

Свойства

Следующие свойства автоматизации пользовательского интерфейса не перекрываются с функциями Microsoft Active Accessibility. Их можно использовать в реализации IAccessibleEx:

  • AriaProperties
  • AriaRole
  • AutomationId
  • ClassName
  • ClickablePoint
  • ControllerFor
  • Культура
  • ОписаниеBy
  • ПотокиTo
  • FrameworkId
  • IsContentElement
  • IsControlElement
  • IsDataValidForForm
  • IsRequiredForForm
  • ItemStatus
  • ItemType
  • LabeledBy
  • LocalizedControlType
  • Ориентация

Хотя свойства автоматизации пользовательского интерфейса AcceleratorKey и AccessKey перекрываются с свойством accKeyboardShortcut Microsoft Active Accessibility, их по-прежнему можно использовать в реализации I AccessEx для элементов управления с ключом доступа и акселератором. Аналогичным образом свойство автоматизации пользовательского интерфейса ControlType перекрывается свойством accRole Microsoft Active Accessibility, но его можно использовать в реализации IAccessibleEx для определения более конкретной роли элемента управления.

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

Свойство автоматизации пользовательского интерфейса Эквивалент microsoft Active Accessibility
ОграничивающийRectangle accLocation
HasKeyboardFocus accState, STATE_SYSTEM_FOCUSED
IsEnabled accState, STATE_SYSTEM_UNAVAILABLE
IsKeyboardFocusable accState, STATE_SYSTEM_FOCUSABLE
IsPassword accState, STATE_SYSTEM_PROTECTED
HelpText accHelp
Имя accName
NativeWindowHandle WindowFromAccessibleObject
IsOffscreen accState, STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN
ProcessId Предоставляется ядром автоматизации пользовательского интерфейса

 

Для любого неподдерживаемого свойства автоматизации пользовательского интерфейса реализация метода IRawElementProviderSimple::GetPropertyValue должна задать для параметра pRetVal значение VT_EMPTY и возвращать S_OK. Возврат UIA_E_NOTSUPPORTED может привести к удалению прокси-сервера MSAA-to-UIA по умолчанию для соответствующего свойства.

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

Следующие шаблоны элементов управления автоматизации пользовательского интерфейса не перекрываются с функциями Microsoft Active Accessibility. Их можно использовать в реализации IAccessibleEx:

  • Док
  • ExpandCollapse
  • Сетка
  • GridItem
  • MultipleView
  • RangeValue
  • Свиток
  • ScrollItem
  • SynchronizedInput
  • Стол
  • TableItem
  • Трансформировать

Для шаблонов элементов управления RangeValue и Transform некоторые методы перекрываются между шаблоном элемента управления автоматизации пользовательского интерфейса и методами Microsoft Active Accessibility. В этих случаях необходимо реализовать оба варианта. Например, оба метода Microsoft Active Accessibility IAccessible::get_accValue и i Access:IAccessible::p ut_accValue должны быть реализованы, так как должны быть реализованы методы службы автоматизации пользовательского интерфейсаIRangeValueProvider::Value и методы IRangeValueProvider::SetValue. В внутренней среде реализация может совместно использовать код для этих целей. Это требование для реализации обоих наборов позволяет избежать частичной реализации интерфейса шаблона, сохраняя интерфейс IAccess доступны для использования существующими клиентами Microsoft Active Accessibility.

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

Шаблон элемента управления автоматизации пользовательского интерфейса Роль "Специальные возможности Майкрософт"
InvokePattern ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTONи любая другая роль, где значение свойства accDefaultAction не NULL.
SelectionItemPattern ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON
SelectionPattern ROLE_SYSTEM_LIST
ПереключательPattern ROLE_SYSTEM_CHECKBUTTON
ValuePattern ROLE_SYSTEM_TEXT (если оно не доступно только для чтения), ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOXи любая другая роль, если значение свойства accValue не NULL.
WindowPattern Автоматически поддерживается на уровне Microsoft Win32 HWND.

 

События изменения свойств автоматизации пользовательского интерфейса WinEvents

Помимо событий, определенных для IAccessible, также определены следующие идентификаторы событий и могут использоваться с реализацией IAccessibleEx в качестве событий изменения свойств для соответствующих свойств автоматизации пользовательского интерфейса. Они используют тот же механизм, что и события, определенные для IAccessible. Дополнительные сведения см. в разделе WinEvents.

Идентификатор WinEvent для реализации IAccessibleEx Связанный идентификатор WinEvent из Microsoft Active Accessibility
UIA_AriaPropertiesPropertyId Никакой
UIA_AriaRolePropertyId Никакой
UIA_ControllerForPropertyId Никакой
UIA_DescribedByPropertyId Никакой
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId Никакой
UIA_InputDiscardedEventId Никакой
UIA_InputReachedOtherElementEventId Никакой
UIA_InputReachedTargetEventId Никакой
UIA_IsDataValidForFormPropertyId Никакой
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId Никакой
UIA_MultipleViewCurrentViewPropertyId Никакой
UIA_ScrollHorizontallyScrollablePropertyId Никакой
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId Никакой
UIA_ScrollVerticallyScrollablePropertyId Никакой
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId Никакой
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

Для событий выше, имеющих значение EVENT_OBJECT_, указанное после них, и реализация IAccessibleEx должна запускать это событие в дополнение к указанному событию изменения. Это позволяет существующему IAccessEx клиентскому коду продолжать работу, передавая более детализированные сведения о событиях заинтересованным клиентам.

WinEvents

интерфейс IAccessibleEx