Compartir a través de


Suscribirse a eventos de Automatización de la interfaz de usuario

Microsoft Automatización de la interfaz de usuario permite a los clientes suscribirse a eventos de interés. Esta funcionalidad mejora el rendimiento eliminando la necesidad de sondear continuamente los elementos de la interfaz de usuario del sistema para ver si ha cambiado 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 escuchar los cambios de selección en un elemento de una lista, en la propia lista o en un cuadro de diálogo completo.

Nota

No suponga que un proveedor de Automatización de la interfaz de usuario genera todos los eventos posibles. Por ejemplo, no todos los cambios de propiedad hacen que los proveedores de proxy estándar generen eventos para los controles de Windows Forms y Microsoft 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.

Nota

Antes de implementar un controlador de eventos, debe estar familiarizado con los problemas de subprocesos descritos en Descripción de los problemas de subprocesos.

 

En este tema se incluyen las siguientes secciones.

Registro de controladores de eventos

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

Subscription (método) Tipo de evento Interfaz de devolución de llamada
AddFocusChangedEventHandler Cambio de foco IUIAutomationFocusChangedEventHandler
AddPropertyChangedEventHandler, AddPropertyChangedEventHandlerNativeArray Cambio de propiedad IUIAutomationPropertyChangedEventHandler
AddStructureChangedEventHandler Cambio de estructura IUIAutomationStructureChangedEventHandler
AddNotificationEventHandler notificación IUIAutomationNotificationEventHandler
AddAutomationEventHandler Otros eventos IUIAutomationEventHandler

 

Cuando un cliente agrega un controlador de eventos para todos los descendientes (TreeScope_Descendants), Automatización de la interfaz de usuario agrega solo un controlador para la raíz del subárbol y el controlador escucha en todos los descendientes. Automatización de la interfaz de usuario no agrega controladores de eventos de forma recursiva.

Cuando un cliente llama al método IUIAutomation::RemoveAllEventHandlers, Automatización de la interfaz de usuario quita todos los controladores de eventos del proceso de cliente.

Para recibir y controlar eventos, implemente un objeto de control de eventos que exponga una interfaz de devolución de llamada y debe registrar el objeto llamando a un método de registro de eventos como IUIAutomation::AddPropertyChangedEventHandler. La interfaz de devolución de llamada tiene un único método; Automatización de la interfaz de usuario llama a este método cuando se procesa el evento.

Al apagar o cuando los eventos de Automatización de la interfaz de usuario ya no son de interés para la aplicación, Automatización de la interfaz de usuario clientes deben llamar a uno o varios de los siguientes métodos IUIAutomation.

Nota

Un cliente de Automatización de la interfaz de usuario no debe usar varios subprocesos para agregar o quitar controladores de eventos. Un comportamiento inesperado puede dar lugar a que se agregue o quite un controlador de eventos mientras se agrega o se quita otro en el mismo proceso de cliente.

 

Método Descripción
RemoveAutomationEventHandler Anula el registro de un controlador de eventos registrado mediante AddAutomationEventHandler.
RemoveFocusChangedEventHandler Anula el registro de un controlador de eventos registrado mediante AddFocusChangedEventHandler.
RemovePropertyChangedEventHandler Anula el registro de un controlador de eventos registrado mediante AddPropertyChangedEventHandler o AddPropertyChangedEventHandlerNativeArray.
RemoveStructureChangedEventHandler Anula el registro de un controlador de eventos registrado mediante AddStructureChangedEventHandler.
RemoveNotificationEventHandler Anula el registro de un controlador de eventos registrado mediante AddNotificationEventHandler.
RemoveAllEventHandlers Anula el registro de todos los controladores de eventos registrados.

 

Es posible que un evento se entregue a un controlador de eventos después de cancelar la suscripción del controlador, si el evento se recibe simultáneamente con la solicitud de cancelar la suscripción del evento. El procedimiento recomendado es seguir el estándar Modelo de objetos componentes (COM) y evitar destruir el objeto del controlador de eventos hasta que su recuento de referencias haya alcanzado cero. La destrucción de un controlador de eventos inmediatamente después de cancelar la suscripción de eventos puede provocar una infracción de acceso si un evento se entrega en tiempo de espera.

Ejemplos

Para ver ejemplos de código que muestran cómo controlar eventos de Automatización de la interfaz de usuario, consulte Cómo implementar controladores de eventos.

Conceptual

Información general sobre eventos de UI Automation

Descripción de los problemas de subprocesos