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.
Rubriques connexes