Visão Geral dos Provedores de Automação de Interface do Usuário

Um provedor de Automação da Interface do Usuário da Microsoft é um objeto de software que expõe um elemento da interface do usuário de um aplicativo para que os aplicativos cliente de acessibilidade possam recuperar informações sobre o elemento e invocar sua funcionalidade. Em geral, cada controle ou outro elemento distinto em uma interface do usuário tem um provedor.

A Microsoft inclui um provedor para cada um dos controles padrão fornecidos com o Microsoft Win32, Windows Forms e Windows Presentation Foundation (WPF). Isso significa que os controles padrão são expostos automaticamente a clientes Automação da Interface do Usuário; você não precisa implementar nenhuma interface de acessibilidade para os controles padrão.

Se o aplicativo incluir controles personalizados, você precisará implementar provedores de Automação da Interface do Usuário para esses controles para torná-los acessíveis a aplicativos cliente de acessibilidade. Você também precisa implementar provedores para quaisquer controles de terceiros que não incluam um provedor. Implemente um provedor implementando interfaces de provedor Automação da Interface do Usuário e interfaces de padrão de controle.

Este tópico fornece uma visão geral de como os desenvolvedores de controle implementam provedores de Automação da Interface do Usuário. Ele inclui as seções a seguir.

Tipos de provedores

Automação da Interface do Usuário provedores se enquadram em duas categorias: provedores do lado do servidor e provedores do lado do cliente (ou proxy).

Um provedor do lado do servidor é um objeto, como um controle personalizado, que contém sua própria implementação nativa das interfaces relevantes do provedor de Automação da Interface do Usuário. Um provedor do lado do servidor se comunica com aplicativos cliente em todo o limite do processo expondo sua implementação das interfaces do provedor ao núcleo de Automação da Interface do Usuário, quais serviços solicitam dos clientes. Para obter mais informações sobre provedores do lado do servidor, consulte Implementando um provedor de Server-Side Automação da Interface do Usuário.

Um provedor do lado do cliente, ou proxy, é um objeto que implementa Automação da Interface do Usuário interfaces de provedor em nome de um controle não inclui uma implementação completa do provedor próprio. Sem um proxy, esse controle é amplamente opaco para Automação da Interface do Usuário, que pode fornecer apenas informações básicas disponíveis no identificador de janela (HWND), como o local do controle. Normalmente, os provedores de proxy se comunicam com o aplicativo no limite do processo enviando e recebendo mensagens do Windows. Para obter mais informações, consulte Implementando um provedor de Automação da Interface do Usuário de Client-Side (proxy).

Conceitos do provedor de Automação da Interface do Usuário

Esta seção fornece breves explicações de alguns dos principais conceitos que você precisa entender para implementar provedores de Automação da Interface do Usuário.

Elementos

Automação da Interface do Usuário elementos são partes da interface do usuário — normalmente janelas ou controles — que são visíveis para Automação da Interface do Usuário clientes. Exemplos incluem janelas de aplicativos, painéis, botões, dicas de ferramentas, caixas de listagem e itens de lista.

Automação da Interface do Usuário elementos são expostos aos clientes como uma árvore. A Automação da Interface do Usuário constrói a árvore navegando de um elemento para outro. A navegação é habilitada pelo provedor para cada elemento. Cada elemento pode apontar para seu próprio elemento pai, seus elementos irmãos e seus primeiros e últimos elementos filho.

Um cliente pode ver a árvore de Automação da Interface do Usuário em três exibições principais, conforme descrito na tabela a seguir:

Visualizar Descrição
Modo de exibição bruto Inclui todos os elementos.
Exibição de controle Inclui elementos que são controles.
Exibição de conteúdo Inclui elementos de controle que transmitem informações ao usuário.

 

É responsabilidade da implementação do provedor definir um elemento como um elemento de conteúdo ou um elemento de controle. Os elementos de controle podem ou não ser elementos de conteúdo, mas todos os elementos de conteúdo são elementos de controle.

Para obter mais informações sobre a exibição do cliente da árvore, consulte Visão geral da árvore Automação da Interface do Usuário.

Estruturas

Uma estrutura é um componente que gerencia controles filho, testes de clique e renderização em uma área da tela. Por exemplo, uma janela Win32, geralmente conhecida como HWND, pode servir como uma estrutura que contém vários elementos Automação da Interface do Usuário, como uma barra de menus, uma barra de status e botões.

Controles de contêiner do Win32, como caixas de listagem e controles de exibição de árvore, são considerados estruturas porque contêm seu próprio código para renderizar itens filho e executar testes de clique neles. Por outro lado, uma caixa de listagem do WPF não é uma estrutura, porque a renderização e o teste de clique estão sendo tratados pela janela que o contém.

A interface do usuário em um aplicativo pode ser composta por estruturas diferentes. Por exemplo, um HWND em um aplicativo pode conter DHTML (HTML Dinâmico) que, por sua vez, pode conter um componente, como uma caixa de combinação em um HWND.

Fragmentos

Uma subárvore completa de elementos de uma estrutura específica é chamada de fragmento. O elemento no nó raiz da subárvore é chamado de raiz de fragmento. Uma raiz de fragmento não tem um pai, mas é hospedada em alguma outra estrutura, geralmente uma janela Win32 (HWND).

Hosts

O nó raiz de cada fragmento deve ser hospedado em um elemento, geralmente uma janela Win32 (HWND). A exceção é a área de trabalho, que não está hospedada em nenhum outro elemento. O host de um controle personalizado é o HWND do controle em si, não a janela do aplicativo ou qualquer outra janela que possa conter grupos de controles de nível superior.

O host de um fragmento desempenha um papel importante no fornecimento de serviços de Automação da Interface do Usuário. Ele habilita a navegação para a raiz do fragmento e fornece algumas propriedades padrão para que o provedor personalizado não precise implementá-las.

Conceitual

Implementando um provedor de Client-Side Automação da Interface do Usuário

Implementando um provedor de Server-Side Automação da Interface do Usuário

Visão geral da árvore de automação de interface do usuário