Implementação de Provedor de Automação de Interface de Usuário do Lado do Cliente

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.

Várias estruturas de interface do usuário diferentes estão em uso nos sistemas operacionais da Microsoft, incluindo o Win32, o Windows Forms e o WPF (Windows Presentation Foundation). A Automação da Interface do Usuário da Microsoft expõe informações sobre os elementos da interface do usuário aos clientes. No entanto, a Automação da Interface do Usuário em si não tem reconhecimento dos diferentes tipos de controles existentes nessas estruturas e das técnicas necessárias para extrair informações deles. Em vez disso, ela deixa essa tarefa para objetos chamados provedores. Um provedor extrai as informações de um controle específico e entrega essas informações para a Automação da Interface do Usuário, que as apresenta ao cliente de maneira consistente.

Os provedores podem existir no lado do servidor ou no lado do cliente. Um provedor do lado do servidor é implementado pelo próprio controle. Os elementos do WPF implementam provedores, assim como todos os controles de terceiros escritos com a Automação da Interface do Usuário em mente.

No entanto, os controles mais antigos, como os do Win32 e do Windows Forms, não dão suporte diretamente à Automação da Interface do Usuário. Em vez disso, esses controles são fornecidos por provedores que existem no processo do cliente e obtêm informações sobre os controles usando a comunicação entre processos, por exemplo, monitorando as mensagens do Windows nos controles. Esses provedores do lado do cliente às vezes são chamados de proxies.

O Windows Vista fornece provedores para controles padrão do Win32 e do Windows Forms. Além disso, um provedor de fallback dá suporte parcial da Automação da Interface do Usuário a qualquer controle que não seja fornecido por outro provedor ou proxy do lado do servidor, mas que tenha uma implementação da Acessibilidade Ativa da Microsoft. Todos esses provedores são carregados e ficam disponíveis automaticamente para os aplicativos cliente.

Para obter mais informações sobre o suporte aos controles do Win32 e do Windows Forms, confira Suporte da Automação da Interface do Usuário para controles padrão.

Os aplicativos também podem registrar outros provedores do lado do cliente.

Como distribuir provedores do lado do cliente

A Automação da Interface do Usuário espera encontrar provedores do lado do cliente em um assembly de código gerenciado. O namespace desse assembly deve ter o mesmo nome do assembly. Por exemplo, um assembly chamado ContosoProxies.dll conterá o namespace ContosoProxies. No namespace, crie uma classe UIAutomationClientSideProviders. Na implementação do campo estático ClientSideProviderDescriptionTable, crie uma matriz de estruturas ClientSideProviderDescription que descrevem os provedores.

Como registrar e configurar provedores do lado do cliente

Os provedores do lado do cliente em uma DLL (biblioteca de vínculo dinâmico) são carregados com uma chamada a RegisterClientSideProviderAssembly. Nenhuma ação adicional precisa ser executada por um aplicativo cliente para uso dos provedores.

Os provedores implementados no próprio código do cliente são registrados por meio de RegisterClientSideProviders. Esse método usa como argumento uma matriz de estruturas ClientSideProviderDescription, cada uma especificando as seguintes propriedades:

  • Uma função de retorno de chamada que cria o objeto do provedor.

  • O nome de classe dos controles que o provedor fornecerá.

  • O nome da imagem do aplicativo (geralmente o nome completo do arquivo executável) que o provedor fornecerá.

  • Sinalizadores que controlam como é feita a correspondência do nome da classe com as classes de janelas encontradas no aplicativo de destino.

Os dois últimos parâmetros são opcionais. O cliente poderá especificar o nome da imagem do aplicativo de destino quando quiser usar provedores diferentes para aplicativos diferentes. Por exemplo, o cliente pode usar um provedor para um controle de exibição de lista do Win32 em um aplicativo conhecido que dá suporte ao padrão de Exibição Múltipla e outro para um controle semelhante em outro aplicativo conhecido sem esse suporte.

Confira também