Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los servidores Microsoft Active Accessibility generan notificaciones WinEvents para informar a los clientes cuando un objeto accesible cambia. Hay multitud de situaciones en las que un servidor notifica un cambio a un cliente. Cada constante de evento definida por Microsoft Active Accessibility describe una de las situaciones en las que se envía una notificación a un cliente. Por ejemplo, WinEvents puede informar de:
- Cuándo se crea o se elimina un objeto.
- Cuándo un elemento recibe o pierde el foco.
- Cuándo cambia el estado o la ubicación de un objeto.
- Cuándo cambia cualquier propiedad de un objeto.
Las aplicaciones cliente no reciben automáticamente las notificaciones de eventos; deben especificar los eventos que quieren recibir mediante una llamada a la función SetWinEventHook. Mediante SetWinEventHook, un cliente se registra para recibir uno o más eventos, y define una función hook para manejar los eventos especificados. Los clientes pueden usar la misma función de enlace para controlar varios tipos de eventos, o bien pueden usar varias funciones de enlace. Los clientes llaman a SetWinEventHook una vez por cada función de enlace que necesiten registrar.
Las funciones hook están localizadas en el código del cliente, en un DDLL mapeado en el proceso del cliente, o en un DLL mapeado en el proceso del servidor. Cada uno de estos métodos presenta sus ventajas y sus desventajas. Para obtener más información, consulte las funciones de gancho en contexto y fuera de contexto.
Para notificar a los clientes la aparición de un evento, los servidores llaman a NotifyWinEvent. El sistema comprueba si alguna aplicación cliente ha definido funciones hook para el evento y llama a las funciones hook adecuadas según sea necesario.
Cuando la función hook del cliente es llamada, esta recibe un cierto número de parámetros que describen el evento y el objeto que generó dicho evento. Para obtener acceso al objeto que ha generado el evento, la función hook del cliente llama a AccessibleObjectFromEvent.
Nota:
Si ningún cliente se ha registrado para recibir WinEvents, el impacto sobre el rendimiento del servidor por llamar a NotifyWinEvent es despreciable.
Los servidores llaman a NotifyWinEvent para cambios ocurridos únicamente en sus propios objetos accesibles; no llaman a NotifyWinEvent cuando hay cambios en elementos de la interfaz de usuario proporcionados por el sistema.
Comunicación basada en eventos
Los clientes deben registrar un hook WinEvent antes de poder recibir notificaciones WinEvent. Para evitar devoluciones de llamada innecesarias y mejorar el rendimiento, se recomienda a los clientes que se registren solo para los eventos que necesitan recibir.
Dentro del procedimiento de gancho, el cliente puede llamar a AccessibleObjectFromEvent para recuperar un objeto IAccessible para el elemento al que se aplica el evento. Con este objeto, el cliente puede comenzar a llamar a los métodos IAccessible para recuperar información o interactuar con el elemento de la interfaz de usuario.