Compartilhar via


Eventos de automação da interface do usuário para clientes

Observação

Esta documentação destina-se a desenvolvedores do .NET Framework que desejam usar as classes de Automação de Interface do Usuário gerenciadas definidas no namespace System.Windows.Automation. Para obter as informações mais recentes sobre Automação de Interface do Usuário, consulte API de Automação do Windows: Automação de Interface do Usuário.

Este tópico descreve como os eventos de Automação da Interface do Usuário da Microsoft são usados por clientes de Automação da Interface do Usuário.

Automação da Interface do Usuário permite que os clientes assinem eventos que interessam. Essa funcionalidade melhora o desempenho eliminando a necessidade de sondar continuamente todos os elementos da interface do usuário no sistema para ver se alguma informação, estrutura ou estado foi alterado.

A eficiência também é aprimorada pela capacidade de escutar eventos somente dentro de um escopo definido. Por exemplo, um cliente pode escutar eventos de alteração de foco em todos os elementos de Automação de Interface do Usuário na árvore ou em apenas um elemento e seus descendentes.

Observação

Não suponha que todos os eventos possíveis sejam gerados por um provedor de Automação de Interface do Usuário da Microsoft. Por exemplo, nem todas as alterações de propriedade fazem com que os eventos sejam gerados pelos provedores de proxy padrão para controles Windows Forms e Win32.

Para obter uma visão mais ampla dos eventos de Automação da Interface do Usuário, consulte a Visão geral dos eventos de automação da interface do usuário.

Assinando eventos

Os aplicativos cliente assinam eventos de um tipo específico registrando um manipulador de eventos usando um dos métodos a seguir.

Método Tipo de evento Tipo de argumentos de evento Tipo de Delegado
AddAutomationFocusChangedEventHandler Alteração de foco AutomationFocusChangedEventArgs AutomationFocusChangedEventHandler
AddAutomationPropertyChangedEventHandler Alteração de propriedade AutomationPropertyChangedEventArgs AutomationPropertyChangedEventHandler
AddStructureChangedEventHandler Alteração de estrutura StructureChangedEventArgs StructureChangedEventHandler
AddAutomationEventHandler Todos os outros eventos, identificados por um AutomationEvent AutomationEventArgs ou WindowClosedEventArgs AutomationEventHandler

Antes de chamar o método, você deve criar um método delegado para lidar com o evento. Se preferir, você pode lidar com diferentes tipos de eventos em um único método e passar esse método em várias chamadas para um dos métodos na tabela. Por exemplo, um único AutomationEventHandler pode ser configurado para lidar com vários eventos de forma diferente de acordo com o EventId.

Observação

Para processar eventos de fechamento de janela, converta o tipo de argumento passado para o manipulador de eventos para WindowClosedEventArgs. Como o elemento de Automação da Interface do Usuário da Microsoft para a janela não é mais válido, você não pode usar o sender parâmetro para recuperar informações; use GetRuntimeId em vez disso.

Cuidado

Se o aplicativo puder receber eventos de sua própria interface do usuário, não use o thread da interface do usuário do aplicativo para assinar eventos ou cancelar a assinatura. Fazer isso pode levar a um comportamento imprevisível. Para obter mais informações, consulte Automação da Interface do Usuário Problemas de Threading.

Ao desligar ou quando Automação da Interface do Usuário eventos não são mais de interesse para o aplicativo, Automação da Interface do Usuário clientes devem chamar um dos métodos a seguir.

Método Descrição
RemoveAutomationEventHandler Cancela o registro de um manipulador de eventos que foi registrado usando AddAutomationEventHandler.
RemoveAutomationFocusChangedEventHandler Cancela o registro de um manipulador de eventos que foi registrado usando AddAutomationFocusChangedEventHandler.
RemoveAutomationPropertyChangedEventHandler Cancela o registro de um manipulador de eventos que foi registrado usando AddAutomationPropertyChangedEventHandler.
RemoveAllEventHandlers Cancela o registro de todos os manipuladores de eventos registrados.

Para ver um exemplo de código, consulte Assinar eventos de automação da interface do usuário.

Consulte também