Partager via


Vue d’ensemble de l’interface utilisateur Automation TextPattern

Remarque

Cette documentation est destinée 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 informations les plus récentes sur UI Automation, consultez API Windows Automation : UI Automation.

Cette vue d’ensemble explique comment utiliser Microsoft UI Automation pour exposer le contenu textuel, y compris les attributs de format et de style, des contrôles de texte dans les plateformes prises en charge par UI Automation. Ces contrôles incluent, mais pas seulement, microsoft .NET Framework TextBox et RichTextBox leurs équivalents Win32.

L’exposition du contenu textuel d’un contrôle est effectuée à l’aide du modèle de TextPattern contrôle, qui représente le contenu d’un conteneur de texte en tant que flux de texte. À son tour, TextPattern nécessite la prise en charge de la TextPatternRange classe pour exposer des attributs de format et de style. TextPatternRange prend en charge TextPattern en représentant des étendues de texte contiguës ou multiples, disjointes dans un conteneur de texte avec une collection de Start et de End points de terminaison. TextPatternRange prend en charge les fonctionnalités telles que la sélection, la comparaison, la récupération et la traversée.

Remarque

Les TextPattern classes ne fournissent pas de moyen d’insérer ou de modifier du texte. Toutefois, selon le contrôle, cela peut être effectué par UI Automation ValuePattern ou par le biais d’une entrée directe au clavier. Consultez l’exemple d’insertion de texte TextPattern pour obtenir un exemple.

La fonctionnalité décrite dans cette vue d’ensemble est essentielle pour aider les fournisseurs de technologies d’assistance et leurs utilisateurs finaux. Les technologies d’assistance peuvent utiliser UI Automation pour collecter des informations complètes de mise en forme de texte pour l’utilisateur et fournir une navigation et une sélection de texte TextUnit par programmation (caractère, mot, ligne ou paragraphe).

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

Text Services Framework (TSF) est une infrastructure système simple et évolutive qui permet des services en langage naturel et une entrée de texte avancée sur le bureau et dans les applications. En plus de fournir des interfaces pour que les applications exposent leur magasin de texte, elles prennent également en charge les métadonnées de ce magasin de texte.

Toutefois, TSF a été conçu pour les applications qui doivent injecter une entrée dans des scénarios prenant en charge le contexte, alors qu’il TextPattern s’agit d’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 appareils 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

Texto

Le contrôle Texte est l’élément de base représentant un morceau de texte à l’écran.

Un contrôle de texte autonome peut être utilisé comme étiquette ou texte statique sur un formulaire. Les contrôles de texte peuvent également être contenus dans la structure d’un ListItem, TreeItem ou DataItem.

Remarque

Les contrôles de texte peuvent ne pas apparaître dans la vue de contenu de l’arborescence UI Automation (voir Vue d’ensemble de l’arborescence UI Automation). Cela est dû au fait que les contrôles de texte sont souvent affichés par le biais de 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 se trouve dans la vue de contenu de l’arborescence UI Automation, il n’est pas nécessaire que l’élément de texte lui-même se trouve dans cette vue de l’arborescence UI Automation. Le seul texte affiché dans la vue de contenu est le texte qui n’est pas redondant. Cela permet à toute technologie d’assistance de filtrer rapidement uniquement les informations dont leurs utilisateurs ont besoin.

Éditer

Les contrôles De modification permettent à un utilisateur d’afficher et de modifier une seule ligne de texte.

Remarque

La ligne de texte unique peut s’encapsuler dans certains scénarios de disposition.

Document

Les contrôles de document permettent à un utilisateur de naviguer et d’obtenir des informations à partir de plusieurs pages de texte.

API du client TextPattern

Catégorie Descriptif
Classe System.Windows.Automation.TextPattern Point d’entrée du 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 s'assurer de la validité actuelle d’une plage de texte créée à l’aide de TextPatternRange. Si le texte d’origine du 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 toujours avoir une certaine viabilité si seule une partie du texte d’origine est modifiée et que le contrôle de texte sous-jacent gère son texte « pointeur » avec des ancres (ou des points de terminaison) plutôt qu’avec un positionnement absolu des caractères.

Les clients peuvent surveiller un TextChangedEvent pour être informés de toute modification apportée au contenu textuel sur lequel ils travaillent.
Classe System.Windows.Automation.AutomationTextAttribute Permet d’identifier les attributs de mise en forme d’une plage de texte.

API du fournisseur TextPattern

Les éléments ou contrôles d'interface utilisateur qui prennent en charge TextPattern en implémentant les interfaces ITextProvider et ITextRangeProvider, soit nativement, soit via des proxys Microsoft UI Automation, sont capables d'exposer des informations détaillées sur les attributs de tout texte qu'ils contiennent, en plus de fournir des capacités de navigation robustes.

Un TextPattern fournisseur n’a pas besoin de prendre en charge tous les attributs de texte si le contrôle ne prend pas en charge les attributs particuliers.

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 cette fonctionnalité, il n’est pas nécessaire de prendre en charge l’une de ces méthodes. Toutefois, le contrôle doit exposer le type de sélection de texte qu’il prend en charge en implémentant la SupportedTextSelection propriété.

Un TextPattern fournisseur doit toujours prendre en charge les TextUnit constantes Character et Document, ainsi que toutes les autres TextUnit constantes qu’il est capable de prendre en charge.

Remarque

Le fournisseur peut ignorer la prise en charge d’un TextUnit spécifique en se reportant à la plus grande TextUnit prise en charge suivante dans l’ordre suivant : Character, Format, Word, Line, Paragraph, Page et Document.

API (Interface de Programmation d'Applications) Descriptif
interface de ITextProvider Expose des méthodes, des propriétés et des attributs qui prennent en charge TextPattern dans les applications clientes (voir ITextProvider).
interface de ITextRangeProvider Représente une étendue de texte dans un fournisseur de texte (voir ITextRangeProvider).
Classe System.Windows.Automation.TextPatternIdentifiers Contient des valeurs utilisées comme identificateurs pour les fournisseurs de texte (voir TextPatternIdentifiers).

Sécurité

L’architecture UI Automation a été conçue avec une sécurité à l’esprit (voir Vue d’ensemble de la sécurité UI Automation). Toutefois, les classes TextPattern décrites dans cette vue d’ensemble nécessitent des considérations de sécurité spécifiques.

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

  • Les clients UI Automation peuvent uniquement utiliser Microsoft UI Automation s’ils sont entièrement « approuvés ». Par exemple, il s’agit du Bureau de connexion protégé, où seules les applications connues et approuvées peuvent s’exécuter.

  • Les développeurs de fournisseurs UI Automation doivent être conscients que toutes les informations qu’ils choisissent d’exposer dans leurs contrôles via Microsoft UI Automation sont essentiellement publiques et entièrement accessibles par d’autres codes. Microsoft UI Automation ne fait aucun effort pour déterminer la fiabilité de n’importe quel client UI Automation. Par conséquent, le fournisseur UI Automation ne doit pas exposer de contenu protégé ni d’informations textuelles sensibles (telles que les champs de mot de passe).

  • L’une des modifications les plus importantes de la sécurité pour Windows Vista est largement appelée « Entrée sécurisée » qui englobe les technologies telles que les comptes d’utilisateur avec privilèges minimum (ou limités) et l’isolation au niveau du privilège de l’interface utilisateur (UIPI).

    • L’UIPI empêche un programme de contrôler et/ou de surveiller un autre programme plus « privilégié », empêchant ainsi les attaques de messages inter-processus qui usurpent l’entrée 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 nécessairement de privilèges d’administrateur, mais s’exécutent plutôt avec les privilèges les moins nécessaires. Par conséquent, certaines restrictions peuvent être appliquées dans les scénarios LUA. Plus particulièrement la troncation de chaîne (y compris les chaînes TextPattern), où il peut être nécessaire de limiter la taille des chaînes récupérées à partir d’applications au niveau de l’administrateur afin qu’elles ne soient pas forcées d’allouer de la mémoire au point de désactiver l’application.

Performances

Étant donné que TextPattern s’appuie sur des appels interprocesseurs 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. Cela est différent des autres modèles de contrôle dans Microsoft UI Automation qui sont accessibles à l’aide des méthodes GetCachedPattern ou TryGetCachedPattern.

Une tactique pour améliorer les performances consiste à s’assurer que les clients UI Automation tentent de récupérer des blocs de texte de taille modérée en utilisant GetText. Par exemple, les appels GetText(1) entraînent des accès interprocesseurs pour chaque caractère, tandis qu’un appel GetText(-1) entraîne un accès interprocesseur, mais peut avoir une latence élevée en fonction de la taille du fournisseur de texte.

Terminologie 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 zéro 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 comme point de terminaison de départ. RangeFromChild et GetVisibleRanges peut retourner des plages dégénérées lorsque le fournisseur de texte ne trouve pas de plages de texte qui correspondent à la condition donnée. Cette plage dégénérée peut être utilisée comme point de terminaison de départ dans le fournisseur de texte. FindText et FindAttribute renvoyer une référence Null (Nothing dans Microsoft Visual Basic .NET) pour éviter toute confusion avec une plage découverte par rapport à 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. Ils se composent d’éléments de contenu textuels tels que des liens hypertexte ou des tables et des éléments de contrôle tels que des images et des boutons. Pour plus d’informations détaillées, consultez Accéder aux objets intégrés via l’automatisation de l’interface utilisateur.

Point de terminaison
Point absolu de la plage de texte Start ou End dans un conteneur de texte.

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

PlageDeTexte
Représentation d’une étendue de texte, avec des points de début et de fin, dans un conteneur de texte, y compris 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 des segments logiques d’une plage de texte.

Voir aussi