Instrucciones de implementación de IAccessibleEx

El núcleo de Microsoft Automatización de la interfaz de usuario puede recuperar todas las propiedades de accesibilidad activa de Microsoft para cualquier objeto accesible expuesto por un servidor a través de la interfaz IAccessible. Al implementar IAccessibleEx, solo debe exponer los aspectos de la funcionalidad de la interfaz de usuario que, de lo contrario, no se pueden exponer a través de las propiedades de accesibilidad activas de Microsoft existentes. En este tema se identifican las propiedades Automatización de la interfaz de usuario y los patrones de control que representan la funcionalidad de la interfaz de usuario que no tiene ningún homólogo en Accesibilidad activa de Microsoft, son las propiedades y los patrones de control que puede exponer en una implementación de IAccessibleEx.

Este tema contiene las siguientes secciones:

Propiedades

Las siguientes propiedades Automatización de la interfaz de usuario no se superponen con la funcionalidad de accesibilidad activa de Microsoft. Se pueden usar en una implementación de IAccessibleEx :

  • AriaProperties
  • AriaRole
  • AutomationId
  • ClassName
  • ClickablePoint
  • ControllerFor
  • culture
  • DescriptBy
  • FlowsTo
  • FrameworkId
  • IsContentElement
  • IsControlElement
  • IsDataValidForForm
  • IsRequiredForForm
  • ItemStatus
  • ItemType
  • LabeledBy
  • LocalizedControlType
  • Orientación

Aunque las propiedades AcceleratorKey y AccessKey Automatización de la interfaz de usuario se superponen con la propiedad accKeyboardShortcut Microsoft Active Accessibility, todavía puede usarlas en una implementación de IAccessibleEx para los controles que tienen una tecla de acceso y un acelerador. Del mismo modo, la propiedad ControlType Automatización de la interfaz de usuario se superpone con la propiedad accRole de accesibilidad activa de Microsoft, pero todavía puede usarla en una implementación de IAccessibleEx para definir un rol más específico para un control.

Dado que las siguientes propiedades de elemento Automatización de la interfaz de usuario ya están cubiertas por las propiedades de accesibilidad activa de Microsoft, no es necesario usarlas en una implementación de IAccessibleEx.

Propiedad de automatización de interfaz de usuario Equivalente de accesibilidad activa de Microsoft
BoundingRectangle accLocation
HasKeyboardFocus accState, STATE_SYSTEM_FOCUSED
IsEnabled accState, STATE_SYSTEM_UNAVAILABLE
IsKeyboardFocusable accState, STATE_SYSTEM_FOCUSABLE
IsPassword accState, STATE_SYSTEM_PROTECTED
HelpText accHelp
Nombre accName
NativeWindowHandle WindowFromAccessibleObject
IsOffscreen accState, STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN
ProcessId Proporcionado por Automatización de la interfaz de usuario core

 

Para cualquier propiedad Automatización de la interfaz de usuario no admitida, la implementación del método IRawElementProviderSimple::GetPropertyValue debe establecer el parámetro pRetVal en VT_EMPTY y devolver S_OK. Devolver UIA_E_NOTSUPPORTED puede hacer que el proxy de MSAA a UIA quite la asignación predeterminada de la propiedad correspondiente.

Patrones de control

Los siguientes patrones de control Automatización de la interfaz de usuario no se superponen con la funcionalidad de accesibilidad activa de Microsoft. Se pueden usar en una implementación de IAccessibleEx :

  • Acoplar
  • Expandir y contraer
  • Cuadrícula
  • GridItem
  • MultipleView
  • RangeValue
  • Scroll
  • ScrollItem
  • SynchronizedInput
  • Tabla
  • TableItem
  • Transformación

Para los patrones de control RangeValue y Transform, algunos métodos se superponen entre el patrón de control de Automatización de la interfaz de usuario y los métodos de accesibilidad activa de Microsoft. En estos casos, ambos deben implementarse. Por ejemplo, tanto los métodos IAccessible::get_accValue como IAccessible:::p ut_accValue de Microsoft Active Accessibility deben implementarse, como los métodos Automatización de la interfaz de usuario IRangeValueProvider::Value e IRangeValueProvider::SetValue. Internamente, una implementación puede compartir código para estos. Este requisito para implementar ambos conjuntos evita tener una implementación parcial de una interfaz de patrón al tiempo que mantiene la interfaz IAccessible utilizable por los clientes existentes de Accesibilidad activa de Microsoft.

Los siguientes Automatización de la interfaz de usuario patrones de control no son necesarios cuando el control tiene uno de los roles que se describen a continuación; de lo contrario, deben admitirse explícitamente si procede.

patrón de control de Automatización de la interfaz de usuario Rol de accesibilidad activa de Microsoft
InvokePattern ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTON y cualquier otro rol en el que el valor de la propiedad accDefaultAction no sea NULL.
SelectionItemPattern ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON
SelectionPattern ROLE_SYSTEM_LIST
TogglePattern ROLE_SYSTEM_CHECKBUTTON
ValuePattern ROLE_SYSTEM_TEXT (cuando no es de solo lectura), ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOX y cualquier otro rol cuando el valor de la propiedad accValue no es NULL.
WindowPattern Se admite automáticamente en los HWND de Microsoft Win32 de nivel superior.

 

Eventos modificados de propiedades de WinEvents para Automatización de la interfaz de usuario

Además de los eventos definidos para IAccessible, también se definen los siguientes identificadores de evento y se pueden usar con una implementación de IAccessibleEx como eventos modificados de propiedad para las propiedades de Automatización de la interfaz de usuario correspondientes. Estos usan el mismo mecanismo que los eventos definidos para IAccessible. Para obtener más información, consulte WinEvents.

Identificador de WinEvent para implementaciones de IAccessibleEx Id. de WinEvent relacionado de la accesibilidad activa de Microsoft
UIA_AriaPropertiesPropertyId Ninguno
UIA_AriaRolePropertyId Ninguno
UIA_ControllerForPropertyId Ninguno
UIA_DescribedByPropertyId Ninguno
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId Ninguno
UIA_InputDiscardedEventId Ninguno
UIA_InputReachedOtherElementEventId Ninguno
UIA_InputReachedTargetEventId Ninguno
UIA_IsDataValidForFormPropertyId Ninguno
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId Ninguno
UIA_MultipleViewCurrentViewPropertyId Ninguno
UIA_ScrollHorizontallyScrollablePropertyId Ninguno
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId Ninguno
UIA_ScrollVerticallyScrollablePropertyId Ninguno
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId Ninguno
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

Para los eventos anteriores que tienen un valor de EVENT_OBJECT_ enumerados después de ellos, y la implementación de IAccessibleEx debe activar este evento además del evento modificado enumerado. Esto permite que el código de cliente IAccessibleEx existente siga funcionando, al tiempo que transmite información de eventos más granular a los clientes interesados.

WinEvents

Interfaz IAccessibleEx