Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les serveurs Microsoft Active Accessibility déclenchent WinEvents pour avertir les clients lorsqu’un objet accessible change. Il existe de nombreuses conditions dans lesquelles un serveur avertit un client d’une modification. Chaque constante d’événement définie par Microsoft Active Accessibility décrit une condition sur laquelle un client est averti. Par exemple, WinEvents peut signaler :
- Lorsqu’un objet est créé ou détruit.
- Lorsqu’un objet reçoit ou perd le focus.
- Lorsque l’état ou l’emplacement d’un objet change.
- Quand une propriété d’un objet change.
Les applications clientes ne reçoivent pas automatiquement de notifications d’événements ; ils doivent spécifier les événements qu’ils souhaitent recevoir en appelant la fonction SetWinEventHook . Avec SetWinEventHook, un client s’inscrit pour recevoir un ou plusieurs événements et définit une fonction de hook pour gérer les événements spécifiés. Les clients peuvent utiliser la même fonction de hook pour gérer plusieurs types d’événements, ou utiliser plusieurs fonctions de hook. Les clients appellent le SetWinEventHook une fois pour chaque fonction de hook qu'ils doivent enregistrer.
Les fonctions de hook se trouvent dans le corps du code du client, dans une DLL mappée au processus du client ou dans une DLL mappée au processus du serveur. Chacune de ces méthodes présente des avantages et des inconvénients. Pour plus d’informations, consultez Fonctions de raccordement en contexte et hors contexte.
Pour notifier les clients d’une occurrence d’événement, les serveurs appellent NotifyWinEvent. Le système vérifie si les applications clientes ont défini des fonctions de hook pour l’événement et appellent les fonctions de hook appropriées si nécessaire.
Lorsque la fonction de hook du client est appelée, elle reçoit un certain nombre de paramètres qui décrivent l’événement et l’objet qui a généré l’événement. Pour accéder à l’objet qui a généré l’événement, la fonction de hook client appelle AccessibleObjectFromEvent.
Remarque
Si aucun client n’est inscrit pour recevoir WinEvents, l’impact sur les performances sur un serveur pour appeler NotifyWinEvent est négligeable.
Les serveurs appellent NotifyWinEvent pour les modifications uniquement dans leurs propres objets accessibles ; ils n’appellent pas NotifyWinEvent pour les modifications apportées aux éléments d’interface utilisateur fournis par le système.
Communication basée sur les événements
Les clients doivent inscrire un hook WinEvent avant de pouvoir recevoir des notifications WinEvent. Pour éviter les rappels inutiles et améliorer les performances, les clients sont invités à s’inscrire uniquement aux événements qu’ils doivent recevoir.
Dans la procédure d'accrochage, le client peut appeler AccessibleObjectFromEvent pour récupérer un objet IAccessible pour l’élément auquel l’événement s’applique. Avec cet objet, le client peut commencer à appeler des méthodes IAccessible pour récupérer des informations ou interagir avec l’élément d’interface utilisateur.