Compartir a través de


Directrices de implementación de IAccessibleEx

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

Este tema contiene las secciones siguientes:

Propiedades

Las siguientes propiedades de 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 deIAccessibleEx:

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

Aunque las propiedades AcceleratorKey y AccessKey UI Automation 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 UI Automation 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 de 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 deIAccessibleEx.

Ui Automation (propiedad) 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 de
IsOffscreen accState, STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN
ProcessId Proporcionado por el núcleo de automatización de la interfaz de usuario

 

Para cualquier propiedad de 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 de 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 deIAccessibleEx:

  • Dársena
  • ExpandCollapse
  • Rejilla
  • GridItem
  • MultipleView
  • RangeValue
  • Pergamino
  • ScrollItem
  • SynchronizedInput
  • Mesa
  • TableItem
  • Transformar

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, se deben implementar los métodos IAccessible::get_accValue y IAccessible::p ut_accValue, como debe implementarse la automatización de la interfaz de usuarioIRangeValueProvider::Value y métodos 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 de IAccessible utilizable por los clientes existentes de accesibilidad activa de Microsoft.

Los siguientes patrones de control de automatización de la interfaz de usuario no son necesarios cuando el control tiene uno de los roles descritos 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_SPLITBUTTONy cualquier otro rol en el que el valor de la propiedad accDefaultAction no esté 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_COMBOBOXy cualquier otro rol cuando el valor de la propiedad accValue no es NULL.
WindowPattern Se admite automáticamente en microsoft Win32 de nivel superior HWNDs.

 

Eventos modificados de propiedades de WinEvents for UI Automation

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 correspondientes de automatización de la interfaz de usuario. Usan el mismo mecanismo que los eventos definidos para IAccessible. Para obtener más información, vea WinEvents.

Identificador de WinEvent para implementaciones de IAccessibleEx Identificador 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 implementación de IAccessibleEx debe activar este evento además del evento modificado enumerado. Esto permite que el código de cliente IAccessibleEx existente continúe funcionando, al tiempo que transmite información de eventos más granular a los clientes interesados.

WinEvents

la interfaz IAccessibleEx