Comparación entre Microsoft Active Accessibility y Automatización de la interfaz de usuario

La API de automatización de Windows consta de dos tecnologías: Microsoft Active Accessibility y Automatización de la interfaz de usuario de Microsoft. Microsoft Active Accessibility es la tecnología de accesibilidad heredada que se introdujo como complemento de plataforma para Windows 95, mientras que Automatización de la interfaz de usuario es una tecnología más reciente y eficaz que supera las limitaciones inherentes de Microsoft Active Accessibility.

En este tema se resumen las principales diferencias entre Microsoft Active Accessibility y Automatización de la interfaz de usuario. Incluye las secciones siguientes:

Principios básicos de diseño

Aunque Microsoft Active Accessibility y Automatización de la interfaz de usuario son dos tecnologías diferentes, los principios de diseño básicos son similares. El propósito de ambas tecnologías es exponer información enriquecida sobre los elementos de la interfaz de usuario usados en las aplicaciones de Windows. Los desarrolladores de herramientas de accesibilidad pueden usar esta información para crear software que haga que las aplicaciones que se ejecutan en Windows sean más accesibles para las personas con discapacidades visuales, auditivas o motrices.

Tanto Microsoft Active Accessibility como Automatización de la interfaz de usuario exponen el modelo de objetos de la interfaz de usuario como un árbol jerárquico con la raíz en un dispositivo de escritorio. Microsoft Active Accessibility representa elementos individuales de la interfaz de usuario como objetos accesibles y Automatización de la interfaz de usuario los representa como elementos de automatización. Ambos hacen referencia a la herramienta de accesibilidad o al programa de automatización de software como cliente. Sin embargo, Microsoft Active Accessibility hace referencia a la aplicación o al control que ofrece la interfaz de usuario para la accesibilidad como servidor, mientras que Automatización de la interfaz de usuario hace referencia a esto como proveedor.

Propiedades y patrones de control

Microsoft Active Accessibility ofrece una única interfaz de modelo de objetos componentes (COM) con un conjunto fijo y pequeño de propiedades. Automatización de la interfaz de usuario ofrece un conjunto más completo de propiedades, así como un conjunto de interfaces extendidas denominadas patrones de control para manipular objetos accesibles de una manera que Microsoft Active Accessibility no puede ofrecer.

Para más información, consulte Introducción a las propiedades de Automatización de la interfaz de usuario e Introducción a los patrones de control de Automatización de la interfaz de usuario.

Roles de MSAA y patrones de control de Automatización de la interfaz de usuario

Microsoft diseñó el modelo de objetos de Microsoft Active Accessibility aproximadamente cuando se lanzó Windows 95 al mercado. El modelo se basa en "roles" definidos hace una década y no se pueden admitir nuevos comportamientos de interfaz de usuario ni combinar dos o más roles juntos. No hay ningún modelo de objetos de texto, por ejemplo, para ayudar a las tecnologías de asistencia a tratar contenido web complejo. Automatización de la interfaz de usuario supera estas limitaciones mediante la inclusión de patrones de control que permiten a los objetos admitir más de un rol, y el patrón de control Texto de Automatización de la interfaz de usuario ofrece un modelo de objetos de texto completo.

Navegación del modelo de objetos

Otra limitación de Microsoft Active Accessibility implica navegar por el modelo de objetos. Microsoft Active Accessibility representa la interfaz de usuario como una jerarquía de objetos accesibles. Los clientes van de un objeto accesible a otro mediante las interfaces y métodos disponibles en el objeto accesible. Los servidores pueden exponer los elementos secundarios de un objeto accesible con propiedades de la interfaz IAccessible o con la interfaz COM IEnumVARIANT estándar. Sin embargo, los clientes deben poder tratar ambos enfoques para cualquier servidor. Esta ambigüedad conlleva trabajo adicional para los implementadores de clientes y modelos interrumpidos de objetos accesibles en el caso de los implementadores de servidores.

Automatización de la interfaz de usuario representa la interfaz de usuario como un árbol jerárquico de elementos de automatización que proporciona una única interfaz para recorrer el árbol. Los clientes pueden personalizar la vista de los elementos del árbol mediante la limitación y el filtrado.

Extensibilidad del modelo de objetos

Las propiedades y funciones de Microsoft Active Accessibility no se pueden extender sin interrumpir ni cambiar la especificación de la interfaz COM de IAccessible. El resultado es que el nuevo comportamiento de control no se puede exponer a través del modelo de objetos; tiende a ser estático.

Con Automatización de la interfaz de usuario, a medida que se crean nuevos elementos de interfaz de usuario, los desarrolladores de aplicaciones pueden incluir propiedades personalizadas, patrones de control y eventos para describir los nuevos elementos. Para más información, consulte Propiedades personalizadas, eventos y patrones de control.

Transición desde MSAA

El marco de la API de automatización de Windows proporciona compatibilidad para realizar la transición desde los servidores de Microsoft Active Accessibility a los proveedores de Automatización de la interfaz de usuario. La interfaz IAccessibleEx permite la compatibilidad con las propiedades y patrones de control específicos de Automatización de la interfaz de usuario que se van a agregar a los servidores heredados de Microsoft Active Accessibility sin necesidad de reescribir toda la implementación. La interfaz IAccessibleEx también permite a los clientes de Microsoft Active Accessibility acceder directamente a interfaces de proveedor de Automatización de la interfaz de usuario, en lugar de a través de interfaces de cliente de Automatización de la interfaz de usuario. Para más información, consulte Interfaz IAccessibleEx.

Elección de Microsoft Active Accessibility, Automatización de la interfaz de usuario o IAccessibleEx

Esta sección le ayuda a determinar qué solución de API de automatización de Windows se va a usar para implementar un producto de tecnología de asistencia o para que la aplicación sea accesible a los productos con esta tecnología.

Nuevas aplicaciones y controles

Si va a desarrollar una nueva aplicación o control, Microsoft recomienda usar Automatización de la interfaz de usuario. Aunque Microsoft Active Accessibility puede ser más fácil de implementar a corto plazo, las limitaciones inherentes a esta tecnología, como su modelo de objetos obsoleto y la no posibilidad de admitir nuevos comportamientos de interfaz de usuario ni roles de combinación, hace que sea más difícil y costoso a largo plazo. Estas limitaciones se vuelven especialmente evidentes al introducir nuevos controles.

El modelo de objetos de Automatización de la interfaz de usuario es más fácil de usar y es más flexible que el de Microsoft Active Accessibility. Los elementos de Automatización de la interfaz de usuario reflejan la evolución de las interfaces de usuario, y los desarrolladores pueden definir patrones de control, propiedades y eventos de Automatización de la interfaz de usuario personalizados.

Microsoft Active Accessibility tiende a ejecutarse lentamente para los clientes que se ejecutan fuera de proceso. Para mejorar el rendimiento, los desarrolladores de programas de herramientas de accesibilidad suelen elegir enlazar y ejecutar sus programas en el proceso de aplicación de destino: un enfoque extremadamente difícil y arriesgado. Automatización de la interfaz de usuario es mucho más fácil de implementar para clientes fuera de proceso y ofrece mucho mejor rendimiento y confiabilidad.

Implementaciones ya existentes de Microsoft Active Accessibility

Si va a actualizar una aplicación o control existente basada en Microsoft Active Accessibility, considere la posibilidad de agregar compatibilidad para Automatización de la interfaz de usuario mediante la implementación de la interfaz IAccessibleEx. En primer lugar, asegúrese de que la aplicación o el control cumplen los siguientes requisitos:

  • La jerarquía de objetos accesibles del servidor de Microsoft Active Accessibility de base de referencia debe estar bien organizada y libre de errores. IAccessibleEx no puede solucionar problemas con las jerarquías de objetos accesibles existentes.
  • La implementación de IAccessibleEx debe cumplir con la especificación de Microsoft Active Accessibility y la especificación de Automatización de la interfaz de usuario. Microsoft proporciona un conjunto de herramientas para validar el cumplimiento de ambas especificaciones. Para más información, consulte Pruebas de accesibilidad.

Si no se cumple alguno de estos requisitos, considere la posibilidad de implementar Automatización de la interfaz de usuario de forma nativa. Puede mantener las implementaciones heredadas del servidor de Microsoft Active Accessibility para la compatibilidad con versiones anteriores si es necesario. Desde una perspectiva de cliente de automatización de la interfaz de usuario, no hay ninguna diferencia entre los proveedores de Automatización de la interfaz de usuario y los servidores de Microsoft Active Accessibility que implementan IAccessibleEx correctamente.

Para más información, consulte Interfaz IAccessibleEx.

Introducción a la API de automatización de Windows

Microsoft Active Accessibility

Automatización de UI

Interfaz IAccessibleEx