Eventos de UI Automation para clientes

Nota

Esta documentación está dirigida a los desarrolladores de .NET Framework que quieran usar las clases de automatización de la interfaz de usuario administradas definidas en el espacio de nombres System.Windows.Automation. Para ver la información más reciente acerca de la automatización de la interfaz de usuario, consulte Windows Automation API: automatización de la interfaz de usuario.

Este tema describe cómo los eventos de Microsoft UI Automation son utilizados por los clientes de UI Automation.

UI Automation permite que los clientes se suscriban a eventos de interés. Esta capacidad mejora el rendimiento eliminando la necesidad de sondear continuamente todos los elementos UI del sistema para ver si ha cambiado cualquier información, estructura o estado.

La eficacia también mejora gracias a la capacidad para realizar escuchas de eventos que solo se encuentran dentro de un ámbito definido. Por ejemplo, un cliente puede estar a la escucha de eventos de cambio de foco en todos los elementos UI Automation del árbol o solo en un elemento y sus descendientes.

Nota

No dé por hecho que todos los eventos posibles los genera un proveedor de Microsoft UI Automation. Por ejemplo, no todos los cambios de propiedades provocan la aparición de eventos por parte de los proveedores de proxy estándar para los controles de Windows Forms y Win32.

Para obtener una vista más amplia de los eventos de Automatización de la interfaz de usuario, consulte información general sobre eventos de UI Automation.

Suscripción a eventos

Las aplicaciones cliente se suscriben a eventos de un tipo determinado mediante el registro de un controlador de eventos, con uno de los métodos siguientes.

Método Tipo de evento Tipo de argumentos de evento Tipo delegado
AddAutomationFocusChangedEventHandler Cambio de foco AutomationFocusChangedEventArgs AutomationFocusChangedEventHandler
AddAutomationPropertyChangedEventHandler Cambio de propiedad AutomationPropertyChangedEventArgs AutomationPropertyChangedEventHandler
AddStructureChangedEventHandler Cambio de estructura StructureChangedEventArgs StructureChangedEventHandler
AddAutomationEventHandler Todos los demás eventos, identificados por un elemento AutomationEvent AutomationEventArgs o WindowClosedEventArgs AutomationEventHandler

Antes de llamar al método, debe crear un método delegado para controlar el evento. Si lo prefiere, puede controlar tipos diferentes de eventos en un solo método y pasar este método en varias llamadas a uno de los métodos de la tabla. Por ejemplo, es posible configurar un único elemento AutomationEventHandler para controlar varios eventos de manera diferente, según el elemento EventId.

Nota

Para procesar eventos de ventana cerrada, convierta el tipo de argumento que se pasa al controlador de eventos a WindowClosedEventArgs. Como el elemento Microsoft UI Automation para la ventana ya no es válido, no puede utilizar el parámetro sender para recuperar información; utilice GetRuntimeId en su lugar.

Precaución

Si la aplicación podría recibir eventos de su propia UI, no utilice el subproceso UI de la aplicación para suscribirse a eventos o para cancelar la suscripción. Si lo hace, podría provocar un comportamiento imprevisible. Para obtener más información, consulta UI Automation Threading Issues.

Al apagar el equipo, o si los eventos UI Automation ya no son de interés para la aplicación, los clientes de UI Automation deben llamar a uno de los métodos siguientes.

Método Descripción
RemoveAutomationEventHandler Anula el registro de un controlador de eventos que se registró mediante AddAutomationEventHandler.
RemoveAutomationFocusChangedEventHandler Anula el registro de un controlador de eventos que se registró mediante AddAutomationFocusChangedEventHandler.
RemoveAutomationPropertyChangedEventHandler Anula el registro de un controlador de eventos que se registró mediante AddAutomationPropertyChangedEventHandler.
RemoveAllEventHandlers Anula el registro de todos los controladores de eventos registrados.

Para ver un código de ejemplo, consulte Suscribirse a los eventos de UI Automation.

Consulte también