Partager via


Vue d'ensemble de TextPattern d'UI Automation

RemarqueRemarque

Cette documentation s'adresse aux développeurs .NET Framework qui veulent 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 (page éventuellement en anglais).

Cette vue d'ensemble décrit 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, entre autres, 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 la 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 contigües ou multiples dans un conteneur de texte avec 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.

RemarqueRemarque

Les classes TextPattern ne fournissent pas de solution pour insérer ou modifier le texte.Toutefois, selon le contrôle, ces opérations peuvent être effectuées par le ValuePattern UI Automation ou directement par une entrée au clavier.Pour obtenir un exemple, consultez ValuePattern 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 rassembler des informations complètes sur la mise en forme du texte pour l'utilisateur et offrir une navigation par programme et une sélection de texte par TextUnit (caractère, mot, ligne ou paragraphe).

Cette rubrique comprend les sections suivantes.

  • UI Automation TextPattern contreText Services Framework
  • Types de contrôle
  • API cliente TextPattern
  • API fournisseur TextPattern
  • Sécurité
  • Performances
  • Terminologie TextPattern
  • Rubriques connexes

UI Automation TextPattern contreText Services Framework

Text Services Framework (TSF) est une infrastructure système simple et évolutive qui active les services de langage naturel et la saisie 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, TSF prend en charge les métadonnées de ces magasins de texte.

Toutefois, TSF a été conçu pour les applications qui doivent faire 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 auront besoin des fonctionnalités plus complexes de TSF pour les entrées contextuelles.

Types de contrôle

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 de texte peuvent également être intégrés à la structure d'un ListItem, TreeItem ou DataItem.

RemarqueRemarque

Les contrôles de texte sont susceptibles de ne pas apparaître dans l'affichage du contenu de l'arborescence UI Automation (consultez Vue d'ensemble de l'arborescence UI Automation).En effet, les contrôles de texte 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 est dans l'affichage du contenu de l'arborescence UI Automation, il n'est pas nécessaire que l'élément texte soit lui-même dans cet affichage de l'arborescence UI Automation.Le seul texte qui apparaît dans l'affichage du contenu est le texte ne constituant pas d'informations redondantes.Cela permet aux technologies d'assistance de filtrer rapidement seules les informations dont leurs utilisateurs ont besoin.

Modifier

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

RemarqueRemarque

La ligne de texte peut être encapsulée dans certains scénarios de disposition.

Document

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

API cliente TextPattern

System.Windows.Automation.TextPattern Class

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.

System.Windows.Automation.Text.TextPatternRange Class

Représentation d'une plage 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 du contenu textuel qu'ils utilisent.

System.Windows.Automation.AutomationTextAttribute Class

Utilisé pour identifier les attributs de mise en forme d'une plage de texte.

API 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 des 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 robustes.

Un fournisseur TextPattern n'a pas à prendre en charge tous les attributs de texte si certains attributs ne sont pas pris en charge dans 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. Toutefois, 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 TextUnit Character et Document ainsi que toutes les autres constantes TextUnit qu'il peut prendre en charge.

RemarqueRemarque

Le fournisseur peut ignorer la prise en charge pour un TextUnit spécifique en déférant au TextUnit pris en charge suivant le plus long, dans l'ordre suivant : Character, Format, Word, Line, Paragraph, Page et Document.

ITextProvider Interface

Expose les méthodes, propriétés et attributs qui prennent en charge TextPattern dans les applications clientes (consultez ITextProvider).

ITextRangeProvider Interface

Représente une plage de texte dans un fournisseur de texte (consultez ITextRangeProvider).

System.Windows.Automation.TextPatternIdentifiers Class

Contient les valeurs utilisées comme identificateurs pour les fournisseurs de texte (consultez TextPatternIdentifiers).

Sécurité

L'architecture UI Automation a été conçue en considérant la 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 fournissent 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 disposent d'un niveau de confiance suffisant. Par exemple, pour le bureau d'ouverture de session protégé, seules les applications connues et de confiance peuvent être exécutées.

  • Les développeurs de fournisseurs UI Automation doivent être informés que toutes les informations qu'ils choisissent d'exposer dans leurs contrôles via Microsoft UI Automation sont essentiellement publiques et totalement accessibles par tout autre code. Microsoft UI Automation ne fait aucun effort pour déterminer la crédibilité de tout client UI Automation. Par conséquent, le fournisseur UI Automation ne doit pas exposer de contenu protégé ou 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 plus généralement connue sous le nom d'« entrée sécurisée » ; elle comprend des technologies telles que LUA (Least-privileged User Accounts) et UIPI (UI Privilege Level Isolation).

    • UIPI empêche un programme de contrôler et/ou surveiller un autre programme ayant davantage de privilèges, évitant les attaques de message de fenêtre interprocessus 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'auront pas forcément des privilèges d'administrateur, mais seront 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) : il peut être nécessaire de limiter la taille des chaînes récupérées à partir d'applications de niveau administrateur afin de ne pas avoir à 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, il convient de s'assurer 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) impliqueront des résultats interprocessus pour chaque caractère alors qu'un appel GetText(-1) impliquera un résultat interprocessus, mais pourra présenter une latence élevée selon 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 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 lorsque le fournisseur de textes ne peut pas trouver de plages de texte qui correspondent à 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 textes. 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 plus d'informations, consultez Accéder à des objets incorporés à l'aide d'UI Automation.

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

Voici l'illustration d'un jeu de points de départ et de terminaison.

TextPatternRangeEndpoints (début et fin).

  • TextRange
    Représentation d'une plage 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

Tâches

Utiliser la mise en cache dans UI Automation

Prendre en charge des modèles de contrôle dans un fournisseur UI Automation

Concepts

Modèles de contrôle UI Automation pour les clients

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

Vue d'ensemble de l'arborescence UI Automation

Mappage de modèle de contrôle pour les clients UI Automation

Autres ressources

Text Services Framework (page éventuellement en anglais)