Automatización de la interfaz de usuario y accesibilidad activa
Microsoft Active Accessibility es la API heredada que se introdujo en Windows 95 y se diseñó para que las aplicaciones de Windows sean accesibles. Microsoft Automatización de la interfaz de usuario es el nuevo modelo de accesibilidad para Windows y está pensado para satisfacer las necesidades de productos tecnológicos de asistencia y herramientas de pruebas automatizadas. Automatización de la interfaz de usuario ofrece muchas mejoras sobre la accesibilidad activa de Microsoft. En este tema se explican las diferencias entre las dos tecnologías.
En este tema se incluyen las siguientes secciones.
- Lenguajes de programación
- Servidores y clientes
- Elementos de la interfaz de usuario
- Vistas de árbol y navegación
- Roles y tipos de control
- Estados y propiedades
- Eventos
- Acceso a propiedades y objetos de accesibilidad activa desde Automatización de la interfaz de usuario
- Temas relacionados
Lenguajes de programación
La accesibilidad activa de Microsoft se basa en el modelo de objetos componentes (COM) con compatibilidad con interfaces duales y, por lo tanto, se puede programar en C/C++ y lenguajes de scripting.
Cuando se introdujo Automatización de la interfaz de usuario, la API de cliente se limitaba al código administrado, mientras que la API del proveedor incluía implementaciones administradas y no administradas. Con Windows 7, se introdujo una nueva API de cliente basada en COM para facilitar el programa Automatización de la interfaz de usuario aplicaciones cliente en C/C++.
Servidores y clientes
En Accesibilidad activa de Microsoft, los servidores y los clientes se comunican directamente, en gran medida a través de la implementación del servidor de la interfaz IAccessible .
En Automatización de la interfaz de usuario, un servicio principal se encuentra entre el servidor (proveedor) y el cliente. El servicio principal realiza llamadas a las interfaces implementadas por los proveedores y proporciona servicios adicionales, como la generación de identificadores únicos en tiempo de ejecución para los elementos de la interfaz de usuario. Las aplicaciones cliente obtienen acceso a este servicio principal mediante la creación de un objeto CUIAutomation . Este objeto admite un conjunto de interfaces de cliente que son independientes de las interfaces del proveedor. Para obtener más información, vea Crear el objeto CUIAutomation.
Automatización de la interfaz de usuario proveedores pueden proporcionar información a los clientes de accesibilidad activa de Microsoft y los servidores de accesibilidad activa de Microsoft pueden proporcionar información a Automatización de la interfaz de usuario aplicaciones cliente. Sin embargo, dado que La accesibilidad activa de Microsoft no expone tanta información como Automatización de la interfaz de usuario, los dos modelos no son totalmente compatibles.
Elementos de interfaz de usuario
Microsoft Active Accessibility presenta un elemento de interfaz de usuario como una interfaz IAccessible emparejada con un identificador secundario. Es difícil comparar dos punteros IAccessible para determinar si hacen referencia al mismo elemento.
En Automatización de la interfaz de usuario, cada elemento se representa como un objeto que expone la interfaz IUIAutomationElement a los clientes. Los elementos se pueden comparar mediante sus identificadores en tiempo de ejecución, que se recuperan mediante IUIAutomationElement::GetRuntimeId.
Vistas de árbol y navegación
Los elementos de la interfaz de usuario de la pantalla se pueden ver como una estructura de árbol con el escritorio como raíz, ventanas de aplicación como elementos secundarios inmediatos y elementos dentro de las aplicaciones como descendientes adicionales.
En Accesibilidad activa de Microsoft, muchos elementos de la interfaz de usuario que son irrelevantes para los usuarios finales se exponen en la estructura de árbol. Las aplicaciones cliente deben examinar todos los elementos del árbol para determinar qué elementos son significativos.
Las aplicaciones cliente de la Automatización de la interfaz de usuario ven la UI mediante una vista filtrada. La vista contiene solo elementos que proporcionan información al usuario o con los que el usuario puede interactuar. Las vistas predefinidas que incluyen solo elementos de control y solo los elementos de contenido están disponibles, y las aplicaciones cliente pueden definir vistas personalizadas. Automatización de la interfaz de usuario facilita la descripción de la interfaz de usuario al usuario y ayuda al usuario a interactuar con las aplicaciones.
En Accesibilidad activa de Microsoft, la navegación entre elementos es espacial, por ejemplo, al mover al elemento que se encuentra a la izquierda en la pantalla, lógico, por ejemplo, pasar al siguiente elemento de menú o al siguiente elemento del orden de tabulación en un cuadro de diálogo o jerárquico, por ejemplo, mover al primer elemento secundario de un contenedor o desde un elemento secundario a su elemento primario. La navegación jerárquica es complicada por el hecho de que los elementos secundarios no siempre son objetos que implementan IAccessible.
En Automatización de la interfaz de usuario, todos los elementos de la interfaz de usuario son objetos COM que exponen la interfaz IUIAutomationElement y admiten la misma funcionalidad básica. Desde el punto de vista del proveedor, los objetos COM implementan una interfaz heredada de IRawElementProviderSimple. La navegación es principalmente jerárquica; es decir, de los padres a los hijos, y de un hermano al siguiente. Sin embargo, la navegación entre elementos del mismo nivel tiene un elemento lógico, ya que puede seguir el orden de tabulación. Un cliente puede navegar desde cualquier punto de partida, mediante cualquier vista filtrada del árbol, mediante IUIAutomationTreeWalker. Un cliente también puede navegar a elementos secundarios o descendientes concretos mediante IUIAutomationElement::FindFirst e IUIAutomationElement::FindAll. Por ejemplo, es fácil recuperar todos los elementos de un cuadro de diálogo que admiten un patrón de control especificado.
La navegación en Automatización de la interfaz de usuario es más coherente que en accesibilidad activa de Microsoft. Algunos elementos, como las listas desplegables y las ventanas emergentes, aparecen dos veces en el árbol de accesibilidad activa de Microsoft y la navegación de esos elementos puede tener resultados inesperados. Es difícil implementar correctamente la accesibilidad activa de Microsoft para un control de barras. Automatización de la interfaz de usuario habilita la reposición y el cambio de posición, de modo que un elemento se pueda colocar en cualquier parte del árbol, a pesar de la jerarquía impuesta por la propiedad de las ventanas.
Roles y tipos de control
Microsoft Active Accessibility usa la propiedad accRole (IAccessible::get_accRole) para recuperar una descripción del rol de elemento en la interfaz de usuario, como ROLE_SYSTEM_SLIDER o ROLE_SYSTEM_MENUITEM. El rol de un elemento es la pista principal para su funcionalidad disponible. La interacción con un control se logra mediante métodos fijos como IAccessible::accSelect e IAccessible::accDoDefaultAction. La interacción entre la aplicación cliente y la interfaz de usuario se limita a lo que se puede hacer a través de IAccessible.
En cambio, Automatización de la interfaz de usuario desacopla el tipo de control del elemento, que se describe mediante la propiedad IUIAutomationElement::CurrentControlType (o IUIAutomationElement::CachedControlType) de su funcionalidad esperada. La funcionalidad se determina por los patrones de control admitidos por el proveedor a través de su implementación de interfaces especializadas. Los patrones de control se pueden combinar para describir el conjunto completo de funcionalidades compatibles con un elemento de interfaz de usuario determinado. Algunos proveedores son necesarios para admitir un patrón de control determinado. Por ejemplo, el proveedor de una casilla debe admitir el patrón de control Alternar . Se requieren otros proveedores para admitir uno o varios de un conjunto de patrones de control. Por ejemplo, un botón debe admitir el patrón de control Toggle o Invoke . Otros no admiten patrones de control. Por ejemplo, un panel que no se puede mover, cambiar de tamaño o acoplar no tiene patrones de control.
Automatización de la interfaz de usuario admite controles personalizados, identificados por la constante UIA_CustomControlTypeId y que se pueden describir mediante la propiedad IUIAutomationElement::CurrentLocalizedControlType (o IUIAutomationElement::CachedLocalizedControlType).
En la tabla siguiente seasignan los roles de objeto de accesibilidad activa de Microsoft a Automatización de la interfaz de usuario tipos de control.
Estados y propiedades
Los elementos de accesibilidad activa de Microsoft admiten un conjunto común de propiedades. Algunas propiedades, como accState, deben describir condiciones diferentes, en función del rol de elemento. Los servidores deben implementar todos los métodos de IAccessible que devuelven una propiedad, incluso aquellas propiedades que no son relevantes para el elemento.
Automatización de la interfaz de usuario define propiedades adicionales, algunas de las cuales corresponden a los estados de Accesibilidad activa de Microsoft. Algunas propiedades son comunes a todos los elementos, pero otras propiedades son específicas de los tipos de control y los patrones de control. Un proveedor de Automatización de la interfaz de usuario no tiene que implementar propiedades irrelevantes, pero puede devolver un valor NULL para las propiedades que no admite. El servicio principal de Automatización de la interfaz de usuario puede obtener algunas propiedades del proveedor de ventanas predeterminado y se fusiona con propiedades implementadas explícitamente por el proveedor.
Además de admitir muchas más propiedades, Automatización de la interfaz de usuario permite mejorar el rendimiento al permitir que las propiedades se almacenen en caché.
En la tabla siguiente se muestra la correspondencia entre algunas propiedades de los dos modelos. Para obtener descripciones de los identificadores de propiedad de Automatización de la interfaz de usuario, consulte Identificadores de propiedad de elemento de Automation.
Descriptor de acceso de propiedades de Active Accessibility | Id. de propiedad de la Automatización de la interfaz de usuario | Comentarios |
---|---|---|
get_accKeyboardShortcut | UIA_AccessKeyPropertyId o UIA_AcceleratorKeyPropertyId | UIA_AccessKeyPropertyId tiene prioridad si ambos están presentes. |
get_accName | UIA_NamePropertyId | |
get_accRole | UIA_ControlTypePropertyId | Consulte la tabla anterior para asignar roles a tipos de control. |
get_accValue | UIA_ValueValuePropertyId o UIA_RangeValueValuePropertyId | Válido solo para los tipos de control que admiten IUIAutomationValuePattern o IUIAutomationRangeValuePattern. Los valores de intervalo se normalizan en 0-100, para ser coherentes con el comportamiento de accesibilidad activa de Microsoft. Los valores se representan como cadenas. |
get_accHelp | UIA_HelpTextPropertyId | |
accLocation | UIA_BoundingRectanglePropertyId | |
get_accDescription | No compatible. | accDescription no tenía una especificación clara en Accesibilidad activa de Microsoft, lo que dio lugar a que los servidores coloquen diferentes fragmentos de información en esta propiedad. |
get_accHelpTopic | No compatible. |
En la tabla siguiente se muestran los identificadores de propiedad Automatización de la interfaz de usuario que corresponden a las constantes de estado del objeto de accesibilidad activa de Microsoft.
Para obtener una lista completa de los identificadores de propiedad, consulte Identificadores de propiedad.
Eventos
A diferencia de la accesibilidad activa de Microsoft, el mecanismo de eventos de Automatización de la interfaz de usuario, no se basa en el enrutamiento de eventos de Windows, que está estrechamente vinculado a los identificadores de ventana y no requiere que la aplicación cliente configure enlaces. Las suscripciones a eventos se pueden ajustar a determinadas partes del árbol, no solo a eventos concretos. Los proveedores también pueden ajustar la generación de eventos mediante el seguimiento de los eventos que se están escuchando.
También es más fácil que los clientes recuperen los elementos que generan eventos porque se pasan directamente a la devolución de llamada del evento. Las propiedades del elemento se capturan previamente automáticamente, si se proporcionó una solicitud de caché cuando el cliente se suscribió al evento.
En la tabla siguiente se muestra la correspondencia de constantes de eventos de accesibilidad activa de Microsoft y Automatización de la interfaz de usuario identificadores de evento.
Acceso a propiedades y objetos de accesibilidad activa desde Automatización de la interfaz de usuario
Una característica clave de Automatización de la interfaz de usuario que no está disponible en accesibilidad activa de Microsoft es la capacidad de capturar varias propiedades con una sola operación entre procesos.
Los clientes existentes de accesibilidad activa de Microsoft pueden aprovechar esta capacidad mediante la interfaz IUIAutomationLegacyIAccessiblePattern . Esta interfaz representa un patrón de control que expone las propiedades y métodos de accesibilidad activa de Microsoft en los elementos de la interfaz de usuario. Al recuperar elementos, una aplicación puede solicitar que este patrón de control y sus propiedades se almacenen en caché.
IUIAutomationLegacyIAccessiblePattern también permite a los clientes obtener propiedades de accesibilidad activa de Microsoft de elementos que no tienen compatibilidad nativa con IAccessible.
Los cambios en las propiedades de un IUIAutomationLegacyIAccessiblePattern no generan eventos Automatización de la interfaz de usuario.
Temas relacionados
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de