Automação de Eventos de Interface de Usuário para Clientes.
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.
Este tópico descreve como os eventos do Microsoft Automação da Interface do Usuário são usados por clientes Automação da Interface do Usuário.
Automação da Interface do Usuário permite que os clientes assinem eventos de interesse. 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 Automação da 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 da 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 exibição mais ampla de eventos de Automação da Interface do Usuário, consulte Automação da Interface do Usuário Visão geral de eventos.
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 eventos | Tipo delegado |
---|---|---|---|
AddAutomationFocusChangedEventHandler | Alteração de foco | AutomationFocusChangedEventArgs | AutomationFocusChangedEventHandler |
AddAutomationPropertyChangedEventHandler | Alteração da 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 manipular 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 fechados pela janela, converta o tipo de argumento que é passado para o manipulador de eventos como WindowClosedEventArgs. Como o elemento microsoft Automação da Interface do Usuário 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 | Remove todos os manipuladores de eventos não registrados. |
Para obter o código de exemplo, consulte Assinar eventos de Automação da Interface do Usuário.