Acessibilidade ativa da Microsoft e automação da interface do usuário comparadas

A API de Automação do Windows consiste em duas tecnologias: Microsoft Active Accessibility e Microsoft Automação da Interface do Usuário. O Microsoft Active Accessibility é a tecnologia de acessibilidade herdada que foi introduzida como um suplemento de plataforma para o Windows 95, enquanto a Automação da Interface do Usuário é uma tecnologia mais nova e mais capaz que supera as limitações inerentes ao Microsoft Active Accessibility.

Este tópico fornece resumos das principais diferenças entre o Microsoft Active Accessibility e a Automação da Interface do Usuário. Inclui as seguintes secções:

Princípios básicos de projeto

Embora o Microsoft Active Accessibility e o Automação da Interface do Usuário sejam duas tecnologias diferentes, os princípios básicos de design são semelhantes. O objetivo de ambas as tecnologias é expor informações detalhadas sobre os elementos da interface do usuário usados em aplicativos do Windows. Os desenvolvedores de ferramentas de acessibilidade podem usar essas informações para criar software que torne os aplicativos executados no Windows mais acessíveis para pessoas com deficiência visual, auditiva ou de movimento.

Tanto o Microsoft Active Accessibility quanto o Automação da Interface do Usuário expõem o modelo de objeto da interface do usuário como uma árvore hierárquica, enraizada na área de trabalho. O Microsoft Active Accessibility representa elementos individuais da interface do usuário como objetos acessíveis e a Automação da Interface do Usuário os representa como elementos de automação. Ambos se referem à ferramenta de acessibilidade ou programa de automação de software como cliente. No entanto, o Microsoft Active Accessibility refere-se ao aplicativo ou controle que oferece a interface do usuário para acessibilidade como o servidor, enquanto a Automação da Interface do Usuário refere-se a isso como o provedor.

Propriedades e padrões de controle

O Microsoft Active Accessibility oferece uma única interface COM (Component Object Model) com um pequeno conjunto fixo de propriedades. A Automação da Interface do Usuário oferece um conjunto mais rico de propriedades, bem como um conjunto de interfaces estendidas chamadas padrões de controle para manipular objetos acessíveis de maneiras que o Microsoft Active Accessibility não consegue.

Para obter mais informações, consulte Visão geral das propriedades de automação da interface do usuário e Visão geral dos padrões de controle de automação da interface do usuário.

Funções MSAA e padrões de controle de automação da interface do usuário

A Microsoft projetou o modelo de objeto Microsoft Active Accessibility aproximadamente ao mesmo tempo que o Windows 95 foi lançado. O modelo é baseado em "funções" definidas há uma década e você não pode dar suporte a novos comportamentos de interface do usuário ou mesclar duas ou mais funções juntas. Não há um modelo de objeto de texto, por exemplo, para ajudar as tecnologias assistivas a lidar com conteúdo complexo da Web. A Automação da Interface do Usuário supera essas limitações introduzindo padrões de controle que permitem que os objetos ofereçam suporte a mais de uma função, e o padrão de controle Texto da Automação da Interface do Usuário oferece um modelo de objeto de texto completo.

Navegação do modelo de objeto

Outra limitação do Microsoft Active Accessibility envolve a navegação no modelo de objeto. O Microsoft Active Accessibility representa a interface do usuário como uma hierarquia de objetos acessíveis. Os clientes navegam de um objeto acessível para outro usando interfaces e métodos disponíveis no objeto acessível. Os servidores podem expor os filhos de um objeto acessível com propriedades da interface IAccessible ou com a interface COM padrão IEnumVARIANT. Os clientes, no entanto, devem ser capazes de lidar com ambas as abordagens para qualquer servidor. Essa ambiguidade significa trabalho extra para implementadores de cliente e modelos de objeto acessíveis quebrados para implementadores de servidor.

A Automação da Interface do Usuário representa a interface do usuário como uma árvore hierárquica de elementos de automação e fornece uma única interface para navegar na árvore. Os clientes podem personalizar a exibição de elementos na árvore por meio de escopo e filtragem.

Extensibilidade do modelo de objeto

As propriedades e funções do Microsoft Active Accessibility não podem ser estendidas sem quebrar ou alterar a especificação da interface COM IAccessible. O resultado é que o novo comportamento de controle não pode ser exposto por meio do modelo de objeto; tende a ser estático.

Com a Automação da Interface do Usuário, à medida que novos elementos da interface do usuário são criados, os desenvolvedores de aplicativos podem introduzir propriedades personalizadas, padrões de controle e eventos para descrever os novos elementos. Para obter mais informações, consulte Propriedades personalizadas, eventos e padrões de controle.

Transição do MSAA

A estrutura da API de Automação do Windows fornece suporte para a transição de servidores Microsoft Active Accessibility para provedores de Automação da Interface do Usuário. A interface IAccessibleEx permite que o suporte para propriedades específicas de Automação da Interface do Usuário e padrões de controle sejam adicionados a servidores Microsoft Active Accessibility herdados sem a necessidade de reescrever toda a implementação. A interface IAccessibleEx também permite que clientes Microsoft Active Accessibility em processo acessem interfaces de provedor de Automação da Interface do Usuário diretamente, em vez de por meio de interfaces de cliente de Automação da Interface do Usuário. Para obter mais informações, consulte A interface IAccessibleEx.

Escolhendo Microsoft Active Accessibility, Automação da Interface do Usuário ou IAccessibleEx

Esta seção ajuda a determinar qual solução de API de Automação do Windows usar para implementar um produto de tecnologia assistiva ou para tornar seu aplicativo acessível a produtos de tecnologia assistiva.

Novos aplicativos e controles

Se você estiver desenvolvendo um novo aplicativo ou controle, a Microsoft recomenda o uso da Automação da Interface do Usuário. Embora o Microsoft Active Accessibility possa ser mais fácil de implementar a curto prazo, as limitações inerentes a essa tecnologia, como seu modelo de objeto antigo e a incapacidade de oferecer suporte a novos comportamentos de interface do usuário ou mesclar funções, a tornam mais difícil e dispendiosa a longo prazo. Estas limitações tornam-se especialmente evidentes quando se introduzem novos controlos.

O modelo de objeto de automação da interface do usuário é mais fácil de usar e é mais flexível do que o do Microsoft Active Accessibility. Os elementos de automação da interface do usuário refletem a evolução das interfaces do usuário, e os desenvolvedores podem definir padrões, propriedades e eventos de controle personalizados da Automação da Interface do Usuário.

O Microsoft Active Accessibility tende a ser executado lentamente para clientes que ficam sem processo. Para melhorar o desempenho, os desenvolvedores de programas de ferramentas de acessibilidade geralmente optam por conectar e executar seus programas no processo de aplicação de destino: uma abordagem extremamente difícil e arriscada. A Automação da Interface do Usuário é muito mais fácil de implementar para clientes fora do processo e oferece muito melhor desempenho e confiabilidade.

Implementações existentes do Microsoft Active Accessibility

Se você estiver atualizando um aplicativo ou controle existente baseado no Microsoft Active Accessibility, considere adicionar suporte para a Automação da Interface do Usuário implementando a interface IAccessibleEx da empresa. Primeiro, verifique se seu aplicativo ou controle atende aos seguintes requisitos:

  • A hierarquia de objetos acessíveis do servidor Microsoft Active Accessibility de linha de base deve ser bem organizada e livre de erros. IAccessibleEx não pode corrigir problemas com hierarquias de objetos acessíveis existentes.
  • Sua implementação do IAccessibleEx deve estar em conformidade com a especificação do Microsoft Active Accessibility e a especificação de automação da interface do usuário. A Microsoft fornece um conjunto de ferramentas para validar a conformidade com ambas as especificações. Para obter mais informações, consulte Testando a acessibilidade.

Se um desses requisitos não for atendido, considere implementar a Automação da Interface do Usuário nativamente. Você pode manter implementações herdadas do servidor Microsoft Active Accessibility para compatibilidade com versões anteriores, se necessário. De uma perspectiva de cliente de Automação da Interface do Usuário, não há diferença entre os provedores de Automação da Interface do Usuário e os servidores de Acessibilidade Ativa da Microsoft que implementam IAccessibleEx corretamente.

Para obter mais informações, consulte A interface IAccessibleEx.

Visão geral da API de automação do Windows

Acessibilidade ativa da Microsoft

Automação de interface do usuário

A interface IAccessibleEx