Appeler le modèle de contrôle

Décrit des instructions et des conventions pour l’implémentation d’IInvokeProvider, y compris des informations sur les méthodes. Le modèle de contrôle Invoke est utilisé pour prendre en charge les contrôles qui ne conservent pas l’état lors de l’activation, mais qui lancent ou exécutent une action unique et non ambiguë.

Les contrôles qui conservent l’état, tels que les cases d’case activée et les cases d’option, doivent implémenter respectivement IToggleProvider et ISelectionProvider. Pour obtenir des exemples de contrôles qui implémentent ce modèle de contrôle, consultez Types de contrôles et leurs modèles de contrôle pris en charge.

Cette rubrique contient les sections suivantes.

Conventions et directives d'implémentation

Lors de l’implémentation du modèle de contrôle Invoke , notez les directives et conventions suivantes :

  • Les contrôles implémentent IInvokeProvider si le même comportement n’est pas exposé via un autre fournisseur de modèles de contrôle. Par exemple, si la méthode IUIAutomationInvokePattern::Invoke sur un contrôle effectue la même action que la méthode IUIAutomationExpandCollapsePattern::Expand ou Collapse , le contrôle ne doit pas implémenter IInvokeProvider.

  • Pour appeler un contrôle, il convient généralement de cliquer, de double-cliquer ou d’appuyer sur Entrée, sur un raccourci clavier prédéfini ou sur une autre combinaison de touches.

  • L’événement Invoked (UIA_Invoke_InvokedEventId) est déclenché sur un contrôle qui a été activé (en réponse à un contrôle effectuant son action associée). Si possible, l’événement doit être déclenché une fois que le contrôle a terminé l’action et retourné une valeur sans se bloquer. L’événement Invoked (UIA_Invoke_InvokedEventId) doit être déclenché avant de traiter la demande Invoke dans les scénarios suivants :

    • Il n’est pas possible ou pratique d’attendre que l’action soit terminée.
    • L’action requiert une intervention de l’utilisateur.
    • L’action prend du temps et bloque le client pendant un long moment.
  • Si l’appel du contrôle a des effets secondaires importants, ces effets secondaires doivent être exposés via la propriété HelpText . Par exemple, même si IUIAutomationInvokePattern::Invoke n’est pas associé à la sélection, Invoke peut entraîner la sélection d’un autre contrôle.

  • Les effets de pointage (ou de survol de la souris) ne constituent généralement pas un événement Appelé . Toutefois, les contrôles qui effectuent une action (au lieu de provoquer un effet visuel) en fonction de l’état de pointage doivent prendre en charge le modèle de contrôle Invoke .

    Notes

    Cette implémentation est considérée comme un problème d’accessibilité si le contrôle ne peut être appelé que suite à un effet secondaire lié à la souris.

  • L’appel d’un contrôle est différent de la sélection d’un élément. Toutefois, selon le contrôle, l’appel peut avoir comme effet secondaire la sélection de l’élément. Par exemple, l’appel d’un élément de liste de documents Microsoft Word dans le dossier Mes documents permet de sélectionner l’élément et d’ouvrir le document.

  • Un élément peut disparaître de l’arborescence Microsoft UI Automation immédiatement après avoir été appelé. La requête d’informations de l’élément fourni par le rappel d’événement peut échouer. La pré-récupération des informations mises en cache est la solution recommandée.

  • Les contrôles peuvent implémenter plusieurs modèles de contrôle. Par exemple, le contrôle Couleur de remplissage de la barre d’outils Microsoft Excel implémente les modèles de contrôle Invoke et ExpandCollapse . Le modèle de contrôle ExpandCollapse expose le menu et le modèle de contrôle Invoke remplit la sélection active avec la couleur choisie.

Membres requis pour IInvokeProvider

La méthode suivante est requise pour implémenter l’interface IInvokeProvider .

Membres nécessaires Type de membre Notes
Appeler Méthode Invoke est un appel asynchrone qui doit être retourné immédiatement sans blocage.
Ce comportement est particulièrement critique pour les contrôles qui, directement ou indirectement, lancent une boîte de dialogue modale lorsqu’ils sont appelés. Tout client UI Automation à l’origine de l’événement reste bloqué jusqu’à la fermeture de la boîte de dialogue modale.

Ce modèle de contrôle n’est associé à aucune propriété ni à aucun événement.

Types de contrôles et leurs modèles de contrôle pris en charge

Vue d'ensemble des modèles de contrôle UI Automation

Vue d’ensemble de l’arborescence UI Automation

UIA_Invoke_InvokedEventId