Partager via


Concevoir des propriétés personnalisées, des événements et des modèles de contrôle

La conception d’une propriété, d’un événement ou d’un modèle de contrôle personnalisé doit être utile dans un large éventail d’implémentations de contrôle. Les conceptions spécifiques au contrôle ou à l’application qui sont utiles uniquement dans des scénarios limités doivent être évitées. La conception doit suivre l’exemple des propriétés, événements et modèles de contrôle Microsoft UI Automation existants, qui ont été soigneusement spécifiés pour répondre aux besoins d’une grande variété d’applications d’accessibilité et de test automatisé.

L’implémentation de la spécification d’une propriété, d’un événement ou d’un modèle de contrôle personnalisé implique la coopération et l’accord des parties côté client et fournisseur, et exige que les deux parties implémentent la spécification de manière cohérente. Les entreprises sont encouragées à travailler avec des organisations industrielles telles que l’Alliance d’interopérabilité de l’accessibilité (AIA ) pour concevoir et publier la spécification pour la propriété personnalisée, l’événement ou le modèle de contrôle. De cette façon, le consensus peut être atteint et l’interopérabilité avec la plus grande variété d’applications peut être assurée.

Cette rubrique contient les sections suivantes :

Quand utiliser des propriétés et des événements personnalisés

Avant de créer une propriété personnalisée, un événement ou un modèle de contrôle, assurez-vous que UI Automation ne fournit pas de solution existante. Par exemple, la création d’un modèle de contrôle « Click » personnalisé n’est pas nécessaire, car le modèle de contrôle Invoke décrit déjà cette fonctionnalité.

Si vous décidez qu’une propriété, un événement ou un modèle de contrôle personnalisé est nécessaire, assurez-vous qu’elle n’est pas trop vague ou générique. Par exemple, un modèle de contrôle appelé « Show » n’est pas utile, car la visibilité d’un contrôle peut être indiquée par une propriété de disponibilité sur l’élément, telle que UIA_IsExpandCollapsePatternAvailablePropertyId ou UIA_IsScrollItemPatternAvailablePropertyId.

Avant d’implémenter une solution personnalisée, vérifiez soigneusement qu’elle est nécessaire, puis concevez complètement la fonctionnalité.

Conception de propriétés personnalisées

UI Automation inclut deux types de propriétés de base : propriétés d’élément Automation et propriétés de modèle de contrôle. Les propriétés d’élément Automation se composent d’un ensemble commun de propriétés, telles que Name, AcceleratorKey et ClassName, qui sont exposées par tous les éléments UI Automation, quel que soit le type de contrôle. Les propriétés du modèle de contrôle sont exposées par un contrôle via un modèle de contrôle particulier. Chaque modèle de contrôle a un ensemble correspondant de propriétés de modèle de contrôle que le contrôle doit exposer. Par exemple, un contrôle qui prend en charge le modèle de contrôle Grid expose les propriétés ColumnCount et RowCount.

Une propriété d’élément Automation personnalisée ou une propriété de modèle de contrôle doit respecter les instructions de conception suivantes :

  • Une propriété personnalisée doit avoir l’un des types de données suivants spécifiés par l’énumération UIAutomationType. Aucun autre type de données n’est pris en charge pour les propriétés personnalisées.
    • UIAutomationType_Bool
    • UIAutomationType_Double
    • UIAutomationType_Element
    • UIAutomationType_Int
    • UIAutomationType_Point
    • UIAutomationType_String
  • Si la propriété personnalisée contient des données de chaîne (BSTR), la spécification doit indiquer si la propriété est localisable (autrement dit, si la chaîne peut être traduite en différentes langues d’interface utilisateur).
  • La propriété personnalisée ne doit pas chevaucher les fonctionnalités ou les fonctionnalités des propriétés existantes.

Conception d’événements personnalisés

Les applications utilisent des notifications d’événements UI Automation pour répondre aux modifications et actions impliquant des éléments d’interface utilisateur. La plupart des propriétés ont associé des événements modifiés par propriété que UI Automation déclenche lorsque la valeur de la propriété change. Si vous introduisez une propriété personnalisée, vous devez envisager d’introduire tous les événements personnalisés correspondants qui peuvent également être nécessaires.

Un événement personnalisé doit respecter les instructions de conception suivantes :

  • L’événement personnalisé doit être « sans état ». Elle ne peut pas être associée à une propriété ou une valeur spécifique.
  • L’événement personnalisé ne doit pas chevaucher la définition ou le rôle d’un événement existant.

Événements UI Automation personnalisés et WinEvents

winEvents sont un mécanisme de communication et d’événementing interprocesseur utile dans la plateforme Microsoft Windows. Toutefois, l’introduction d’un nouvel ID WinEvent est risquée, car elle peut provoquer des collisions avec d’autres applications ou le système d’exploitation, ce qui entraîne l’instabilité du système. Pour éviter les collisions, Microsoft a défini plusieurs catégories différentes de WinEvents et, pour chaque catégorie, a défini une ou plusieurs plages de valeurs à utiliser comme ID WinEvent. Pour plus d’informations, consultez Allocation des ID WinEvent.

Les événements UI Automation personnalisés évitent les conflits en allouant l’ID d’événement en interne dans l’infrastructure UI Automation.

Conception de modèles de contrôle personnalisés

Un modèle de contrôle est une interface avec des propriétés, des méthodes et des événements qui définissent une partie discrète des fonctionnalités disponibles à partir d’un élément Automation. Les méthodes de modèle de contrôle permettent aux clients UI Automation de manipuler un aspect particulier du contrôle. Les propriétés et événements du modèle de contrôle fournissent des informations sur certains aspects du contrôle et fournissent des informations sur l’état de l’élément Automation qui implémente le modèle de contrôle.

Un modèle de contrôle personnalisé doit respecter les instructions de conception suivantes :

  • Un modèle de contrôle personnalisé doit couvrir un scénario particulier. Par exemple, le modèle de contrôle ItemContainer est destiné à interroger un objet contenu, quel que soit l’état de virtualisation, mais il n’énumère pas ou ne compte pas les objets contenus.
  • Un modèle de contrôle personnalisé ne doit pas chevaucher les fonctionnalités des modèles de contrôle existants. Par exemple, les modèles de contrôle Invoke et ExpandCollapse ne doivent pas être combinés et présentés comme un nouveau modèle de contrôle. Réutilisez les modèles de contrôle existants ou définissez des scénarios uniques avec de nouveaux modèles de contrôle.
  • Plusieurs modèles de contrôle personnalisés peuvent être conçus ensemble pour prendre en charge des scénarios complexes. Par exemple, les modèles de contrôle Selection et SelectionItem fonctionnent ensemble pour prendre en charge les scénarios de sélection d’objets généraux.

Types de contrôles personnalisés

Bien que cette rubrique se concentre sur l’inscription des propriétés, des événements et des modèles de contrôle UI Automation personnalisés, il est également possible d’introduire de nouveaux types de contrôle. Contrairement aux propriétés personnalisées, aux événements et aux modèles de contrôle, un type de contrôle personnalisé ne peut pas être inscrit par programme au moment de l’exécution, car il s’agit en fait simplement d’une valeur potentielle de la propriété UI Automation ControlType. Toutefois, un ID de type de contrôle personnalisé peut être défini, publié et mis à la disposition d’autres clients et fournisseurs à utiliser. Pour plus d’informations sur les types de contrôles, consultez vue d’ensemble des types de contrôle UI Automation.

conceptuelle

inscrire des propriétés, des événements et des modèles de contrôle personnalisés

vue d’ensemble des propriétés UI Automation

Vue d’ensemble des événements UI Automation

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