Vue d'ensemble de TextPattern d'UI Automation

Notes

Cette documentation s’adresse aux développeurs .NET Framework qui souhaitent utiliser les classes UI Automation managées définies dans l’espace de noms System.Windows.Automation. Pour obtenir les dernières informations sur UI Automation, consultez API Windows Automation : UI Automation.

Cette présentation décrit comment utiliser Microsoft UI Automation pour exposer le contenu textuel, y compris les attributs de mise en forme et de style, des contrôles de texte dans les plateformes prises en charge par UI Automation. Ces contrôles incluent, entre autres, les éléments TextBox et RichTextBox Microsoft .NET Framework ainsi que leurs équivalents Win32.

L’exposition du contenu textuel d’un contrôle s’effectue via l’utilisation du modèle de contrôle TextPattern , qui représente le contenu d’un conteneur de texte sous forme d’un flux de texte. En retour, TextPattern requiert la prise en charge de la classe TextPatternRange pour exposer les attributs de mise en forme et de style. TextPatternRange prend en charge TextPattern en représentant les étendues de texte disjointes contiguës ou multiples dans un conteneur de texte par une collection de points de terminaison Start et End . TextPatternRange prend en charge des fonctionnalités telles que la sélection, la comparaison, la récupération et la traversée.

Notes

Les classes TextPattern ne permettent pas d'insérer ou de modifier du texte. Toutefois, selon le contrôle, ces opérations peuvent être effectuées par la classe ValuePattern UI Automation ou via une entrée directe au clavier. Pour obtenir un exemple, consultez TextPattern Insert Text Sample .

Les fonctionnalités décrites dans cette vue d'ensemble sont indispensables aux fournisseurs de technologie d'assistance et à leurs utilisateurs finaux. Les technologies d’assistance peuvent utiliser UI Automation afin de collecter des informations complètes sur la mise en forme du texte pour l’utilisateur et offrir une navigation programmatique et une sélection de texte par TextUnit (caractère, mot, ligne ou paragraphe).

Différences entre TextPattern d'UI Automation et Text Services Framework

Text Services Framework (TSF) est un framework système simple et scalable qui active les services de langage naturel et l’entrée de texte avancée sur le bureau et dans les applications. En plus de fournir aux applications des interfaces à l'aide desquelles elles peuvent exposer leur magasin de texte, TSF prend en charge les métadonnées de ce magasin de texte.

Toutefois, TSF a été conçu pour les applications qui doivent injecter des entrées dans des scénarios contextuels, alors que TextPattern est une solution en lecture seule (avec la solution de contournement limitée indiquée ci-dessus) destinée à fournir un accès optimisé à un magasin de texte pour les lecteurs d’écran et les périphériques braille.

En résumé, les technologies accessibles nécessitant un accès en lecture seule à un magasin de texte peuvent utiliser TextPattern, mais elles ont besoin des fonctionnalités plus complexes de TSF pour les entrées contextuelles.

Types de contrôles

Texte

Le contrôle Text est l'élément de base représentant une partie du texte à l'écran.

Un contrôle de texte autonome peut être utilisé comme étiquette ou texte statique sur un formulaire. Les contrôles Text peuvent également être intégrés à la structure d'un élément ListItem, TreeItem ou DataItem.

Notes

Il est possible que les contrôles de texte n’apparaissent pas dans l’affichage du contenu de l’arborescence UI Automation (consultez Vue d’ensemble de l’arborescence UI Automation). En effet, les contrôles Text sont souvent affichés via la propriété Name d'un autre contrôle. Par exemple, le texte utilisé pour étiqueter un contrôle Edit est exposé via la propriété Name du contrôle Edit. Étant donné que le contrôle Edit figure dans l’affichage du contenu de l’arborescence UI Automation, il est inutile que l’élément de texte soit présent dans cet affichage de l’arborescence UI Automation. Le seul texte qui apparaît dans l'affichage du contenu est le texte qui ne présente pas d'informations redondantes. Cela permet aux technologies d'assistance de filtrer rapidement les informations dont leurs utilisateurs ont besoin.

Modifier

Les contrôles Edit permettent à un utilisateur d'afficher et de modifier une seule ligne de texte.

Notes

Dans certains scénarios de disposition, le texte peut faire l'objet d'un retour automatique à la ligne.

Document

Les contrôles Document permettent à l'utilisateur de parcourir plusieurs pages de texte et d'obtenir des informations à partir de celles-ci.

API du client TextPattern

Type Description
Classe System.Windows.Automation.TextPattern Point d’entrée pour le modèle de texte Microsoft UI Automation.

Cette classe contient également les deux écouteurs d'événements TextPattern : TextSelectionChangedEvent et TextChangedEvent.
Classe System.Windows.Automation.Text.TextPatternRange Représentation d'une étendue de texte dans un conteneur de texte qui prend en charge TextPattern.

Les clients UI Automation doivent faire attention à la validité actuelle d’une plage de texte créée à l’aide de TextPatternRange. Si le texte d'origine dans le contrôle de texte est complètement remplacé par un nouveau texte, la plage de texte actuelle devient non valide. Toutefois, la plage de texte peut rester viable si seule une partie du texte d'origine est modifiée et que le contrôle de texte sous-jacent gère son « pointeur » de texte avec des points d'ancrage (ou points de terminaison) plutôt qu'avec un positionnement de caractère absolu.

Les clients peuvent écouter un TextChangedEvent pour être avertis de toute modification apportée au contenu textuel qu'ils utilisent.
Classe System.Windows.Automation.AutomationTextAttribute Utilisé pour identifier les attributs de mise en forme d'une plage de texte.

API du fournisseur TextPattern

Les contrôles ou éléments d’interface utilisateur qui prennent en charge TextPattern en implémentant les interfaces ITextProvider et ITextRangeProvider, soit en mode natif soit par l’intermédiaire de proxys Microsoft UI Automation, sont à même d’exposer des informations d’attribut détaillées pour tout texte qu’ils contiennent, en plus de fournir des fonctionnalités de navigation fiables.

Un fournisseur TextPattern n'a pas à prendre en charge tous les attributs de texte si certains attributs ne sont pas pris en charge par le contrôle.

Un fournisseur TextPattern doit prendre en charge les fonctions GetSelection et Select si le contrôle prend en charge la sélection de texte ou le positionnement du curseur de texte (ou signe insertion) dans la zone de texte. Si le contrôle ne prend pas en charge ces fonctionnalités, il n’a pas besoin de prendre en charge ces méthodes. Par contre, le contrôle doit exposer le type de sélection de texte qu'il prend en charge en implémentant la propriété SupportedTextSelection .

Un fournisseur TextPattern doit toujours prendre en charge les constantes TextUnitCharacter et Document , ainsi que toutes les autres constantes TextUnit dans la mesure du possible.

Notes

Le fournisseur peut ignorer la prise en charge d'un TextUnit spécifique en passant au deuxième TextUnit le plus long pris en charge dans l'ordre suivant : Character, Format, Word, Line, Paragraph, Pageet Document.

API Description
Interface ITextProvider Expose les méthodes, propriétés et attributs qui prennent en charge TextPattern dans les applications clientes (consultez ITextProvider).
Interface ITextRangeProvider Représente une plage de texte dans un fournisseur de texte (consultez ITextRangeProvider).
Classe System.Windows.Automation.TextPatternIdentifiers Contient les valeurs utilisées comme identificateurs pour les fournisseurs de texte (consultez TextPatternIdentifiers).

Sécurité

L’architecture UI Automation a été conçue dans une optique de sécurité (consultez Vue d’ensemble de la sécurité UI Automation). Toutefois, les classes TextPattern décrites dans cette vue d'ensemble ont des exigences spécifiques en matière de sécurité.

  • Les fournisseurs de texte Microsoft UI Automation proposent des interfaces en lecture seule et ne permettent pas de modifier le texte existant dans un contrôle.

  • Les clients UI Automation ne peuvent utiliser Microsoft UI Automation que s’ils sont entièrement « fiables ». Par exemple, pour le bureau d'ouverture de session protégé, seules les applications connues et approuvées peuvent être exécutées.

  • Les développeurs de fournisseurs UI Automation doivent savoir que toutes les informations qu’ils choisissent d’exposer dans leurs contrôles via Microsoft UI Automation sont par nature publiques et entièrement accessibles à un autre code. Microsoft UI Automation ne fait rien de particulier pour déterminer la crédibilité d’un client UI Automation. Ainsi, le fournisseur UI Automation ne doit pas exposer de contenu protégé ni d’informations textuelles sensibles (telles que des champs de mot de passe).

  • Pour Windows Vista, l’une des principales modifications en matière de sécurité est généralement connue sous le nom d’« entrée sécurisée » ; elle comprend des technologies comme LUA (Least-privileged [ou Limited] User Accounts) et UIPI (UI Privilege Level Isolation).

    • UIPI empêche un programme de contrôler et/ou de surveiller un autre programme ayant davantage de privilèges, évitant les attaques de message de fenêtre interprocessus qui usurpent l'entrée de l'utilisateur.

    • LUA définit des limites sur les privilèges des applications exécutées par les utilisateurs du groupe Administrateurs. Les applications n'ont pas forcément de privilèges d'administrateur, mais elles sont exécutées avec les privilèges minimum nécessaires. Par conséquent, certaines restrictions peuvent être appliquées dans les scénarios LUA, en particulier la troncation de chaîne (notamment les chaînes TextPattern). Dans ce cas, il peut être nécessaire de limiter la taille des chaînes récupérées à partir d'applications de niveau administrateur afin qu'elles ne soient pas contraintes d'allouer de la mémoire au point de désactiver l'application.

Performances

Étant donné que TextPattern repose sur des appels interprocessus pour la plupart de ses fonctionnalités, il ne fournit pas de mécanisme de mise en cache pour améliorer les performances lors du traitement du contenu, contrairement à d’autres modèles de contrôle dans Microsoft UI Automation, qui sont accessibles à l’aide des méthodes GetCachedPattern ou TryGetCachedPattern.

Pour améliorer les performances, assurez-vous que les clients UI Automation tentent de récupérer des blocs de texte de taille modérée à l’aide de GetText. Par exemple, des appels GetText(1) impliquent des résultats interprocessus pour chaque caractère alors qu'un appel GetText(-1) implique un résultat interprocessus, mais peut présenter une latence élevée selon la taille du fournisseur de texte.

Terminologie de TextPattern

Attribut
Caractéristique de mise en forme d'une plage de texte (par exemple, IsItalicAttribute ou FontNameAttribute).

Plage dégénérée
Une plage dégénérée est une plage de texte vide ou sans caractère. Pour les besoins du modèle de contrôle TextPattern, le point d'insertion de texte (ou signe insertion) est considéré comme une plage dégénérée. Si aucun texte n'est sélectionné, GetSelection retourne une plage dégénérée au niveau du point d'insertion de texte et RangeFromPoint retourne une plage dégénérée en tant que point de terminaison initial. RangeFromChild et GetVisibleRanges peuvent retourner des plages dégénérées quand le fournisseur de texte ne peut pas trouver de plages de texte correspondant à la condition donnée. Cette plage dégénérée peut être utilisée en tant que point de terminaison initial dans le fournisseur de texte. FindText et FindAttribute retournent une référence null (Nothing dans Microsoft Visual Basic .NET) pour éviter toute confusion entre une plage découverte et une plage dégénérée.

Objet incorporé
Il existe deux types d’objets incorporés dans le modèle de texte UI Automation. Il s'agit des éléments de contenu de type texte tels que les liens hypertexte ou les tables, et des éléments de contrôle tels que les images et les boutons. Pour obtenir des informations détaillées, consultez Access Embedded Objects Using UI Automation.

Point de terminaison
Point Start ou End absolu d'une plage de texte dans un conteneur de texte.

TextPatternRangeEndpoints (départ et terminaison). L’exemple suivant illustre un ensemble de points de départ et de terminaison.

TextRange
Représentation d'une étendue de texte, avec des points de départ et de terminaison, dans un conteneur de texte incluant tous les attributs et fonctionnalités associés.

TextUnit
Unité de texte prédéfinie (caractère, mot, ligne ou paragraphe) utilisée pour naviguer dans les segments logiques d'une plage de texte.

Voir aussi