Visão Geral dos Provedores de Automação de Interface do Usuário
Observação
Esta documentação destina-se a desenvolvedores de .NET Framework que querem usar as classes da Automação da Interface do Usuário gerenciadas definidas no namespace System.Windows.Automation. Para obter as informações mais recentes sobre a Automação da Interface do Usuário, confira API de Automação do Windows: Automação da Interface do Usuário.
Os provedores de Automação da Interface do Usuário permitem que os controles se comuniquem com aplicativos cliente da Automação da Interface do Usuário. Em geral, cada controle ou outro elemento distinto em uma IU (interface do usuário) é representado por um provedor. O provedor expõe informações sobre o elemento e, opcionalmente, implementa padrões de controle que permitem ao aplicativo cliente interagir com o controle.
Normalmente, os aplicativos cliente não precisam trabalhar diretamente com provedores. A maioria dos controles padrão em aplicativos que usam as estruturas Win32, Windows Forms ou WPF (Windows Presentation Foundation) são expostos automaticamente ao sistema de Automação da Interface do Usuário. Aplicativos que implementam controles personalizados também podem implementar provedores de Automação da Interface do Usuário para esses controles e os aplicativos cliente não precisam tomar nenhuma medida especial para obter acesso a eles.
Este tópico fornece uma visão geral de como os desenvolvedores de controles implementam provedores de Automação da Interface do Usuário, especialmente para controles em janelas Windows Forms e Win32.
Tipos de provedores
Os provedores de Automação da Interface do Usuário se enquadram em duas categorias: provedores do lado do cliente e provedores do lado do servidor.
Provedores do lado do cliente
Os provedores do lado do cliente são implementados por clientes da Automação da Interface do Usuário para se comunicar com um aplicativo que não dê suporte parcial ou total à Automação da Interface do Usuário. Os provedores do lado do cliente geralmente se comunicam com o servidor no limite do processo enviando e recebendo mensagens do Windows.
Como os provedores de Automação da Interface do Usuário para controles em aplicativos Win32, Windows Forms ou WPF são fornecidos como parte do sistema operacional, os aplicativos cliente raramente precisam implementar seus próprios provedores e essa visão geral não os abrange mais.
Provedores do lado do servidor
Os provedores do lado do servidor são implementados por controles personalizados ou por aplicativos baseados em uma estrutura de interface do usuário diferente de Win32, Windows Forms ou WPF.
Os provedores do lado do servidor se comunicam com aplicativos cliente no limite do processo expondo interfaces ao sistema principal da Automação da Interface do Usuário, que, por sua vez, atende a solicitações de clientes.
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
Os elementos da Automação da Interface do Usuário são partes da interface do usuário que são visíveis para os clientes da Automação da Interface do Usuário. Exemplos incluem janelas de aplicativos, painéis, botões, dicas de ferramentas, caixas de listagem e itens de lista.
Navegação
Os elementos da Automação da Interface do Usuário são expostos aos clientes como uma árvore de automação IU. A Automação da Interface do Usuário constrói a árvore navegando de um elemento para outro. A navegação é habilitada pelos provedores para cada elemento, sendo que cada qual pode apontar para um pai, irmãos e filhos.
Para obter mais informações sobre a exibição de cliente da árvore de automação da IU, consulte Visão geral da árvore de automação da IU.
Exibições
Um cliente pode ver a árvore de automação da IU em três exibições principais, conforme mostrado na tabela a seguir.
Visualizar | Descrição |
---|---|
Modo de exibição bruto | Contém todos os elementos. |
Exibição de controle | Contém elementos que são controles. |
Exibição de conteúdo | Contém elementos que têm conteúdo. |
Para obter mais informações sobre exibições de cliente da árvore de automação da IU, consulte Visão geral da árvore de automação da IU.
É 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.
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 da Automação da Interface do Usuário, como uma barra de menus, uma barra de status e botões.
Caixas de controles Win32, como caixas de listagem modos de exibições de árvore, são consideradas estruturas, pois contêm seu próprio código para renderizar itens filho e executar testes de clique neles. Por outro lado, uma caixa de listagem WPF não é uma estrutura, pois a renderização e os testes de clique estão sendo tratados pela janela do WPF que a contém.
A interface do usuário em um aplicativo pode ser composta por estruturas diferentes. Por exemplo, uma janela do aplicativo HWND pode conter DHTML (HTML Dinâmico) que, por sua vez, contém um componente, como uma caixa de combinação em um HWND.
Fragmentos
Um fragmento é uma subárvore completa de elementos de uma estrutura específica. 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 próprio controle, e 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.