Share via


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

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 aux contrôles ou aux applications qui ne sont utiles que dans des scénarios limités doivent être évitées. La conception doit suivre l’exemple des propriétés, des événements et des modèles de contrôle Microsoft UI Automation existants, qui ont été soigneusement spécifiés pour répondre aux besoins d’un large éventail 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 de l’industrie telles que l’Accessibility Interoperability Alliance (AIA) pour concevoir et publier la spécification pour la propriété, l’événement ou le modèle de contrôle personnalisé. De cette façon, un consensus peut être atteint et l’interopérabilité avec la plus grande variété d’applications peut être garantie.

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é, un événement ou un modèle de contrôle personnalisé, 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’il 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 comprend deux types de propriétés de base : les propriétés des éléments Automation et les propriétés de modèle de contrôle. Les propriétés de l’é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 dans 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 UI Automation notifications d’événements pour répondre aux modifications et actions impliquant des éléments d’interface utilisateur. La plupart des propriétés ont des événements de modification de propriété associés qui UI Automation déclenchent 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 ». Il ne peut pas être associé à 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 de UI Automation personnalisés et WinEvents

WinEvents est un mécanisme de communication et d’événementielle interprocess 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 en tant qu’ID WinEvent. Pour plus d’informations, consultez Allocation d’ID WinEvent.

Les événements de 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 UI Automation clients 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 ni ne compte 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 des 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 de propriétés, d’événements et de modèles de contrôle de UI Automation personnalisés, il est également possible d’introduire de nouveaux types de contrôles. Contrairement aux propriétés, événements et modèles de contrôle personnalisés, un type de contrôle personnalisé ne peut pas être inscrit par programmation au moment de l’exécution, car il s’agit simplement d’une valeur potentielle de la propriété ControlType UI Automation. Toutefois, un ID de type de contrôle personnalisé peut être défini, publié et mis à la disposition d’autres clients et fournisseurs. Pour plus d’informations sur les types de contrôle, consultez vue d’ensemble des types de contrôle UI Automation.

Conceptuel

Inscription de propriétés, d’événements et de 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