Partager via


Appeler le modèle de contrôle

Décrit les instructions et conventions d’implémentation 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 lorsqu’ils sont activés, mais lancent ou exécutent plutôt une action unique et non ambiguë.

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

Cette rubrique contient les sections suivantes.

Directives et conventions de mise en œuvre

Lors de l’implémentation du modèle de contrôle Invoke, notez les instructions 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.

  • L’appel d’un contrôle est généralement effectué en cliquant ou en double-cliquant ou en appuyant sur Entrée, un raccourci clavier prédéfini ou une combinaison alternative de séquences de touches.

  • L’événement appelé (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é sans blocage. L’événement appelé (UIA_Invoke_InvokedEventId) doit être déclenché avant de traiter la requête Invoke dans les scénarios suivants :

    • Il n’est pas possible ou pratique d’attendre que l’action soit terminée.
    • L’action nécessite une interaction utilisateur.
    • L’action prend beaucoup de temps et entraîne le blocage du client appelant pendant une durée importante.
  • Si l’appel du contrôle a des effets secondaires significatifs, ces effets secondaires doivent être exposés par le biais de la propriété HelpText 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 sur-souris) ne constituent généralement pas un événement appelé. Toutefois, les contrôles qui effectuent une action (par opposition à provoquer un effet visuel) en fonction de l’état de pointage doivent prendre en charge le modèle de contrôle Invoke.

    Note

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

  • L’appel d’un contrôle diffère de la sélection d’un élément. Toutefois, selon le contrôle, l’appel peut entraîner la sélection de l’élément en tant qu’effet secondaire. Par exemple, l’appel d’un élément de liste de documents Microsoft Word dans le dossier Mes documents sélectionne l’élément et ouvre le document.

  • Un élément peut disparaître de l’arborescence Microsoft UI Automation immédiatement après l’appel. La demande d’informations à partir de l’élément fourni par le rappel d’événement peut échouer en conséquence. L’extraction préalable des informations mises en cache est la solution de contournement recommandée.

  • Les contrôles peuvent implémenter plusieurs modèles de contrôle. Par exemple, le contrôle Couleur de remplissage dans 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 l'Invoke modèle de contrôle 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 obligatoires Type de membre Notes
appeler Méthode Invoke est un appel asynchrone et doit retourner 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’elles sont appelées. Tout client UI Automation qui a initié l’événement reste bloqué jusqu’à ce que la boîte de dialogue modale soit fermée.

Ce modèle de contrôle n’a pas de propriétés ou d’événements associés.

types de contrôle 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