Cenni preliminari sul modello TextPattern di automazione interfaccia utente

Nota

Questa documentazione è destinata agli sviluppatori .NET Framework che desiderano utilizzare le classi di Automazione interfaccia utente gestite definite nello spazio dei nomi System.Windows.Automation. Per informazioni aggiornate su UI Automation, vedere API di automazione di Windows: UI Automation.

In questa panoramica viene descritto come usare Automazione interfaccia utente Microsoft per esporre il contenuto testuale, inclusi attributi di stile e formato, di controlli di testo in Automazione interfaccia utente, per le piattaforme supportate. Questi controlli includono, tra l'altro, gli oggetti TextBox e RichTextBox di Microsoft .NET Framework così come gli equivalenti Win32.

L'esposizione del contenuto testuale di un controllo viene effettuata tramite l'uso del pattern di controllo TextPattern , che rappresenta il contenuto di un contenitore di testo come flusso di testo. A sua volta, l'oggetto TextPattern richiede il supporto della classe TextPatternRange per esporre attributi di stile e formato. TextPatternRange supporta TextPattern rappresentando intervalli di testo contigui e non in un contenitore di testo con una raccolta di endpoint Start r End . TextPatternRange supporta funzionalità, quali la selezione, il confronto, il recupero e l'attraversamento.

Nota

Le classi TextPattern non consentono di inserire o modificare testo. A seconda del controllo, tuttavia, questa operazione può essere eseguita dall'oggetto ValuePattern di Automazione interfaccia utente o tramite input diretto della tastiera. Per un esempio, vedere TextPattern Insert Text Sample .

La funzionalità descritta in questa panoramica è fondamentale per i fornitori di tecnologie per l'accessibilità e per gli utenti finali. Le tecnologie per l'accessibilità possono usare Automazione interfaccia utente per raccogliere informazioni complete sulla formattazione del testo per l'utente e fornire spostamento a livello di codice e selezione del testo dall'oggetto TextUnit (carattere, parola, riga o paragrafo).

TextPattern di automazione interfaccia utente e Text Services Framework

Text Services Framework (TSF) è un framework di sistema semplice e scalabile che abilita servizi per linguaggi naturali e input di testo avanzato sul desktop e all'interno di applicazioni. Oltre a fornire interfacce per consentire alle applicazioni di esporre i relativi archivi di testo, supporta anche i metadati per tali archivi.

Tuttavia, TSF è stato progettato per applicazioni che richiedono l'immissione di input in scenari in grado di riconoscere il contesto, mentre TextPattern è una soluzione di sola lettura (con la soluzione alternativa limitata indicata sopra) che ha lo scopo di fornire accesso ottimizzato a un archivio di testo per utilità per la lettura e dispositivi Braille.

In breve, le tecnologie accessibili che richiedono accesso in sola lettura a un archivio di testo possono usare TextPattern, ma sarà necessaria la funzionalità più complessa di TSF per input che riconoscano il contesto.

Tipi di controllo

Testo

Il controllo Text è l'elemento di base che rappresenta una sezione di testo sullo schermo.

Un controllo Text autonomo può essere usato come etichetta o testo statico in un form. I controlli Text possono anche essere contenuti all'interno della struttura di un oggetto ListItem, TreeItem o DataItem.

Nota

Non è possibile visualizzare i controlli Text nella visualizzazione contenuto dell'albero di Automazione interfaccia utente (vedere Panoramica sull'albero di Automazione interfaccia utente). Ciò è dovuto al fatto che i controlli di testo sono spesso visualizzati tramite la proprietà Name di un altro controllo. Ad esempio, il testo usato per etichettare un controllo Edit viene esposto tramite la proprietà Name del controllo Edit. Poiché il controllo Edit si trova nella visualizzazione contenuto della struttura ad albero di Automazione interfaccia utente, non è necessario che l'elemento di testo stesso si trovi in tale visualizzazione della struttura ad albero di Automazione interfaccia utente. Nella visualizzazione contenuto viene visualizzato solo il testo non ridondante. In questo modo, qualsiasi tecnologia per l’accessibilità è in grado di filtrare rapidamente solo le informazioni necessarie agli utenti.

Modifica

I controlli Edit consentono agli utenti di visualizzare e modificare una sola riga di testo.

Nota

In alcuni scenari di layout, una singola riga di testo può essere interrotta da un ritorno a capo.

Documento

I controlli Document consentono a un utente di spostarsi e ottenere informazioni da più pagine di testo.

API client TextPattern

Tipo Descrizione
Classe System.Windows.Automation.TextPattern Punto di ingresso per il modello di testo di Automazione interfaccia utente Microsoft.

Questa classe contiene inoltre i due listener di eventi di TextPattern , TextSelectionChangedEvent e TextChangedEvent.
Classe System.Windows.Automation.Text.TextPatternRange La rappresentazione di una sezione di testo all'interno di un contenitore di testo che supporta TextPattern.

I client di automazione interfaccia utente devono valutare con attenzione la validità corrente di un intervallo di testo creato usando TextPatternRange. Se il testo originale nel controllo di testo è completamente sostituito da testo nuovo, l'intervallo di testo corrente non è più valido. L'intervallo di testo, tuttavia, può essere ancora attendibile se viene modificata solo una parte del testo originale e il controllo di testo sottostante gestisce il "puntatore" di testo con ancoraggi (o endpoint), anziché mediante il posizionamento di carattere assoluto.

I client possono restare in ascolto di un oggetto TextChangedEvent per la notifica di qualsiasi modifica apportata al contenuto testuale usato.
Classe System.Windows.Automation.AutomationTextAttribute Usato per identificare gli attributi di formattazione di un intervallo di testo.

API del provider TextPattern

Gli elementi o i controlli dell'interfaccia utente che supportano TextPattern mediante l'implementazione delle interfacce ITextProvider e ITextRangeProvider, in modo nativo o tramite i proxy di Automazione interfaccia utente Microsoft, consentono di esporre informazioni dettagliate sugli attributi per qualsiasi testo contenuto oltre a fornire funzionalità di esplorazione affidabili.

Non è necessario che un provider TextPattern supporti tutti gli attributi di testo se il controllo non offre il supporto per determinati attributi.

Un provider TextPattern deve supportare le funzioni GetSelection e Select se il controllo supporta la selezione di testo o il posizionamento del cursore di testo (o cursore di sistema) all'interno dell'area di testo. Se il controllo non supporta questa funzionalità, non è necessario il supporto di questi metodi. Il controllo deve tuttavia esporre il tipo di selezione di testo supportato implementando la proprietà SupportedTextSelection .

Un provider TextPattern deve supportare sempre le costanti TextUnit e Character di Document così come qualsiasi altra costante di TextUnit che è in grado di supportare.

Nota

Il provider può ignorare il supporto per un oggetto TextUnit specifico rinviando al successivo oggetto TextUnit più grande supportato nell'ordine seguente: Character, Format, Word, Line, Paragraph, Pagee Document.

API Descrizione
Interfaccia ITextProvider Espone metodi, proprietà e attributi che supportano TextPattern nelle applicazioni client (vedere ITextProvider).
Interfaccia ITextRangeProvider Rappresenta una selezione di testo in un provider di testo (vedere ITextRangeProvider).
Classe System.Windows.Automation.TextPatternIdentifiers Contiene valori usati come identificatori per i provider di testo (vedere TextPatternIdentifiers).

Sicurezza

L'architettura Automazione interfaccia utente è stata progettata con l'obiettivo della sicurezza (vedere Panoramica della sicurezza di Automazione interfaccia utente). Le classi TextPattern descritte in questa panoramica, tuttavia richiedono alcune considerazioni specifiche relative alla sicurezza.

  • I provider di testo di Automazione interfaccia utente Microsoft forniscono interfacce di sola lettura, non la possibilità di modificare il testo esistente in un controllo.

  • I client di automazione interfaccia utente possono usare Automazione interfaccia utente Microsoft solo se sono completamente attendibili. Un esempio è dato da un computer di accesso protetto, in cui è possibile eseguire solo applicazioni note e attendibili.

  • È importante che gli sviluppatori di provider di automazione interfaccia utente siano consapevoli che tutte le informazioni esposte nei controlli tramite Automazione interfaccia utente Microsoft sono essenzialmente pubbliche e completamente accessibili da altro codice. In Automazione interfaccia utente Microsoft non viene determinata in alcun modo l'attendibilità dei client di automazione interfaccia utente; pertanto è importante che il provider di automazione interfaccia utente non esponga contenuto protetto né informazioni testuali sensibili, ad esempio campi password.

  • Una delle modifiche più significative in materia di sicurezza introdotte in Windows Vista è nota come "Input sicuro" e include tecnologie quali LUA (account utente con limitazioni) e UIPI (UI Privilege Level Isolation).

    • UIPI impedisce a un programma di controllare e/o monitorare un altro programma con privilegi superiori, impedendo attacchi di messaggi di finestra tra processi che effettuano lo spoofing dell'input dell'utente.

    • Con LUA vengono impostati limiti sui privilegi delle applicazioni eseguite dagli utenti del gruppo Administrators. Alle applicazioni non saranno assegnati privilegi amministratori, ma verranno invece eseguite con i privilegi minimi necessari. Di conseguenza, è possibile che negli scenari LUA vengano applicate alcune restrizioni. Tra le più significative, il troncamento delle stringhe (incluse le stringhe TextPattern) che può prevedere la limitazione delle dimensioni delle stringhe recuperate dalle applicazioni a livello di amministratore, per evitare la necessità di allocare memoria con la conseguente disabilitazione dell'applicazione.

Prestazioni

Poiché la maggior parte delle funzionalità di TextPattern si basa sulle chiamate tra processi, non offre un meccanismo di memorizzazione nella cache per migliorare le prestazioni durante l'elaborazione di contenuto. Questa condizione è diversa rispetto ad altri pattern di controllo di Automazione interfaccia utente Microsoft che consentono l'accesso tramite il metodo GetCachedPattern o TryGetCachedPattern.

Per migliorare le prestazioni, è possibile assicurarsi che i client di automazione interfaccia utente provino a recuperare blocchi di testo di dimensioni moderate tramite il metodo GetText. Ad esempio, le chiamate GetText(1) generano riscontri tra processi per ogni carattere, mentre una chiamata GetText(-1) genera un riscontro tra processi, ma può avere una latenza elevata a seconda delle dimensioni del provider di testo.

Terminologia di TextPattern

Attributo
Una caratteristica di formattazione di un intervallo di testo, ad esempio IsItalicAttribute o FontNameAttribute.

Intervallo degenerato
Un intervallo degenerato è un intervallo di testo vuoto o con zero caratteri. Ai fini del pattern di controllo TextPattern, il punto di inserimento del testo (o cursore di sistema) è considerato un intervallo degenerato. Se non viene selezionato testo, il metodo GetSelection restituisce un intervallo degenerato in corrispondenza del punto di inserimento del testo e il metodo RangeFromPoint restituisce un intervallo degenerato come endpoint iniziale. I metodiRangeFromChild e GetVisibleRanges possono restituire intervalli degenerati quando il provider di testo non è in grado di trovare alcun intervallo di testo corrispondente alla condizione specificata. È possibile usare questo intervallo degenerato come endpoint iniziale all'interno del provider di testo. FindText e FindAttribute restituiscono un riferimento null (Nothing in Microsoft Visual Basic .NET) per evitare confusione tra un intervallo individuato e un intervallo degenerato.

Oggetto incorporato
Sono disponibili due tipi di oggetti incorporati nel modello di testo di Automazione interfaccia utente. Sono costituiti da elementi di contenuto basati su testo, quali collegamenti ipertestuali o tabelle, e da elementi di controllo, quali immagini e pulsanti. Per altre informazioni, vedere Access Embedded Objects Using UI Automation.

Endpoint
Il punto Start o End assoluto di un intervallo di testo all'interno di un contenitore di testo.

TextPatternRangeEndpoint (iniziale e finale). Di seguito viene illustrato un insieme di punti iniziali e finali.

TextRange
Una rappresentazione di un intervallo di testo, con punti iniziali e finali, in un contenitore di testo che include tutti gli attributi e le funzionalità associati.

TextUnit
Un'unità di testo predefinita (carattere, parola, riga o paragrafo) usata per lo spostamento tramite segmenti logici di un intervallo di testo.

Vedi anche