Abonnement aux événements UI Automation

Microsoft UI Automation permet aux clients de s’abonner à des événements intéressants. Cette fonctionnalité améliore les performances en éliminant la nécessité d’interroger en permanence les éléments d’interface utilisateur dans le système pour voir si des informations, une structure ou un état ont changé.

L’efficacité est également améliorée par la possibilité d’écouter des événements uniquement dans une portée définie. Par exemple, un client peut écouter les modifications de sélection sur un élément d’une liste, sur la liste elle-même ou sur une boîte de dialogue entière.

Notes

Ne partez pas du principe que tous les événements possibles sont déclenchés par un fournisseur de UI Automation. Par exemple, toutes les modifications de propriété ne provoquent pas le déclencher des événements par les fournisseurs de proxy standard pour les contrôles Windows Forms et Microsoft Win32.

 

La section Vue d’ensemble des événements UI Automation fournit une vue plus large des événements UI Automation.

Notes

Avant d’implémenter un gestionnaire d’événements, vous devez être familiarisé avec les problèmes de thread décrits dans Présentation des problèmes liés aux threads.

 

Cette rubrique contient les sections suivantes.

Inscription de gestionnaires d’événements

Les applications clientes s’abonnent à des événements d’un type particulier en inscrivant un gestionnaire d’événements à l’aide de l’une des méthodes IUIAutomation suivantes.

Méthode d’abonnement Type d'événement Interface de rappel
AddFocusChangedEventHandler Modification du focus IUIAutomationFocusChangedEventHandler
AddPropertyChangedEventHandler, AddPropertyChangedEventHandlerNativeArray Modification de propriété IUIAutomationPropertyChangedEventHandler
AddStructureChangedEventHandler Modification de la structure IUIAutomationStructureChangedEventHandler
AddNotificationEventHandler Notification IUIAutomationNotificationEventHandler
AddAutomationEventHandler Autres événements IUIAutomationEventHandler

 

Lorsqu’un client ajoute un gestionnaire d’événements pour tous les descendants (TreeScope_Descendants), UI Automation ajoute un seul gestionnaire pour la racine de la sous-arborescence, et le gestionnaire écoute tous les descendants. UI Automation n’ajoute pas de gestionnaires d’événements de manière récursive.

Lorsqu’un client appelle la méthode IUIAutomation::RemoveAllEventHandlers, UI Automation supprime tous les gestionnaires d’événements du processus client.

Pour recevoir et gérer des événements, vous implémentez un objet de gestion des événements qui expose une interface de rappel, et vous devez inscrire l’objet en appelant une méthode d’inscription d’événements telle que IUIAutomation::AddPropertyChangedEventHandler. L’interface de rappel a une seule méthode ; UI Automation appelle cette méthode lorsque l’événement est traité.

Lors de l’arrêt, ou lorsque UI Automation événements ne présentent plus d’intérêt pour l’application, UI Automation clients doivent appeler une ou plusieurs des méthodes IUIAutomation suivantes.

Notes

Un client UI Automation ne doit pas utiliser plusieurs threads pour ajouter ou supprimer des gestionnaires d’événements. Un comportement inattendu peut se produire si un gestionnaire d’événements est ajouté ou supprimé tandis qu’un autre est ajouté ou supprimé dans le même processus client.

 

Méthode Description
RemoveAutomationEventHandler Annule l’inscription d’un gestionnaire d’événements qui a été inscrit à l’aide de AddAutomationEventHandler.
RemoveFocusChangedEventHandler Annule l’inscription d’un gestionnaire d’événements qui a été inscrit à l’aide de AddFocusChangedEventHandler.
RemovePropertyChangedEventHandler Annule l’inscription d’un gestionnaire d’événements qui a été inscrit à l’aide de AddPropertyChangedEventHandler ou AddPropertyChangedEventHandlerNativeArray.
RemoveStructureChangedEventHandler Annule l’inscription d’un gestionnaire d’événements qui a été inscrit à l’aide de AddStructureChangedEventHandler.
RemoveNotificationEventHandler Annule l’inscription d’un gestionnaire d’événements que nous avons inscrit à l’aide de AddNotificationEventHandler.
RemoveAllEventHandlers Annule l’inscription de tous les gestionnaires d’événements inscrits.

 

Il est possible qu’un événement soit remis à un gestionnaire d’événements une fois que le gestionnaire a été désinscrit, si l’événement est reçu simultanément avec la demande d’annulation de l’événement. La meilleure pratique consiste à suivre la norme COM (Component Object Model) et à éviter de détruire l’objet gestionnaire d’événements jusqu’à ce que son nombre de références ait atteint zéro. La destruction d’un gestionnaire d’événements immédiatement après la désinscripation des événements peut entraîner une violation d’accès si un événement est remis en retard.

Exemples

Pour obtenir des exemples de code qui montrent comment gérer des événements UI Automation, consultez Comment implémenter des gestionnaires d’événements.

Conceptuel

Vue d'ensemble des événements UI Automation

Présentation des problèmes liés au threading