Dela via


Översikt över UI Automation TextPattern

Kommentar

Den här dokumentationen System.Windows.Automation är avsedd för .NET Framework-utvecklare som vill använda de hanterade UI Automation-klasserna som definierats i namnområdet. Den senaste informationen om UI Automation finns i Windows Automation API: UI Automation.

Den här översikten beskriver hur du använder Microsoft UI Automation för att exponera textinnehållet, inklusive format- och formatattribut, för textkontroller i plattformar som stöds av UI Automation. Dessa kontroller omfattar, men är inte begränsade till, Microsoft .NET Framework TextBox och RichTextBox deras Win32-motsvarigheter.

Att exponera textinnehållet i en kontroll sker med hjälp av TextPattern kontrollmönstret, som representerar innehållet i en textcontainer som en textström. I sin tur TextPattern kräver stöd för TextPatternRange klassen för att exponera format- och formatattribut. TextPatternRange stöder TextPattern genom att representera sammanhängande eller flera, uppdelade textintervall i en textcontainer med en samling Start och End slutpunkter. TextPatternRange har stöd för funktioner som val, jämförelse, hämtning och bläddering.

Kommentar

Klasserna TextPattern tillhandahåller inte något sätt att infoga eller ändra text. Beroende på kontrollen kan detta dock utföras av UI Automation ValuePattern eller via direkt tangentbordsinmatning. Ett exempel finns i TextPattern Insert Text Sample (Infoga textexempel ).

De funktioner som beskrivs i den här översikten är viktiga för leverantörer av hjälpmedelsteknik och deras slutanvändare. Hjälpmedelstekniker kan använda UI Automation för att samla in fullständig textformateringsinformation för användaren och tillhandahålla programmeringsnavigering och val av text efter TextUnit (tecken, ord, rad eller stycke).

UI Automation TextPattern jämfört med Text Services Framework

Text Services Framework (TSF) är ett enkelt och skalbart systemramverk som möjliggör naturliga språktjänster och avancerade textinmatningar på skrivbordet och i program. Förutom att tillhandahålla gränssnitt för program som exponerar sitt textlager har det även stöd för metadata för det textlagret.

TSF har dock utformats för program som behöver mata in indata i sammanhangsmedvetna scenarier, medan TextPattern är en skrivskyddad lösning (med den begränsade lösning som anges ovan) avsedd att ge optimerad åtkomst till ett textlager för skärmläsare och punktskriftsenheter.

I korthet kan tillgängliga tekniker som kräver skrivskyddad åtkomst till ett textlager använda TextPattern, men som behöver de mer komplexa funktionerna i TSF för sammanhangsmedvetna indata.

Kontrolltyper

Text

Textkontrollen är det grundläggande elementet som representerar ett textstycke på skärmen.

En fristående textkontroll kan användas som en etikett eller statisk text i ett formulär. Textkontroller kan också finnas i strukturen för en ListItem, TreeItem eller DataItem.

Kommentar

Textkontroller kanske inte visas i innehållsvyn i UI Automation-trädet (se UI Automation Tree Overview). Det beror på att textkontroller ofta visas via egenskapen Namn för en annan kontroll. Den text som används för att märka en redigeringskontroll exponeras till exempel via egenskapen Namn för redigeringskontrollen. Eftersom kontrollen Redigera finns i innehållsvyn i UI Automation-trädet är det inte nödvändigt att själva textelementet finns i den vyn av UI Automation-trädet. Den enda text som visas i innehållsvyn är text som inte är redundant information. Detta gör det möjligt för alla hjälpmedel att snabbt filtrera endast på den information som användarna behöver.

Redigera

Med redigeringskontroller kan en användare visa och redigera en enda textrad.

Kommentar

Den enda textraden kan radbrytas i vissa layoutscenarier.

Dokument

Med dokumentkontroller kan en användare navigera och hämta information från flera sidor med text.

Api:er för TextPattern-klient

Typ Beskrivning
System.Windows.Automation.TextPattern Klass Startpunkten för textmodellen Microsoft UI Automation.

Den här klassen innehåller också de två TextPattern händelselyssnare och TextSelectionChangedEventTextChangedEvent.
System.Windows.Automation.Text.TextPatternRange Klass Representationen av ett textintervall i en textcontainer som stöder TextPattern.

UI Automation-klienter bör vara försiktiga med den aktuella giltigheten för ett textintervall som skapats med hjälp av TextPatternRange. Om den ursprungliga texten i textkontrollen helt ersätts av ny text blir det aktuella textområdet ogiltigt. Textintervallet kan dock fortfarande ha viss livskraft om endast en del av den ursprungliga texten ändras och den underliggande textkontrollen hanterar sin textpekare med fästpunkter (eller slutpunkter) i stället för med absolut teckenplacering.

Klienter kan lyssna efter ett TextChangedEvent meddelande om eventuella ändringar i det textinnehåll som de arbetar med.
System.Windows.Automation.AutomationTextAttribute Klass Används för att identifiera formateringsattributen för ett textintervall.

API:er för TextPattern-provider

Gränssnittselement eller kontroller som stöds TextPattern genom att implementera gränssnitten ITextProvider och ITextRangeProvider , antingen internt eller via Microsoft UI Automation-proxyservrar, kan exponera detaljerad attributinformation för all text de innehåller, förutom att tillhandahålla robusta navigeringsfunktioner.

En TextPattern provider behöver inte stödja alla textattribut om kontrollen saknar stöd för vissa attribut.

En TextPattern provider måste ha stöd för GetSelection funktionerna och Select om kontrollen stöder textmarkering eller placering av textmarkören (eller systemomsorgen) i textområdet. Om kontrollen inte stöder den här funktionen behöver den inte ha stöd för någon av dessa metoder. Kontrollen måste dock exponera den typ av textmarkering som den stöder genom att implementera SupportedTextSelection egenskapen.

En TextPattern provider måste alltid ha stöd för TextUnit konstanterna Character och Document alla andra TextUnit konstanter som den kan stödja.

Kommentar

Providern kan hoppa över stöd för en specifik TextUnit genom att skjuta upp till nästa största TextUnit som stöds i följande ordning: Character, Format, Word, Line, Paragraph, Pageoch Document.

API beskrivning
ITextProvider Gränssnitt Exponerar metoder, egenskaper och attribut som stöds TextPattern i klientprogram (se ITextProvider).
ITextRangeProvider Gränssnitt Representerar ett textintervall i en textprovider (se ITextRangeProvider).
System.Windows.Automation.TextPatternIdentifiers Klass Innehåller värden som används som identifierare för textleverantörer (se TextPatternIdentifiers).

Säkerhet

UI Automation-arkitekturen har utformats med säkerhet i åtanke (se UI Automation Security Overview). De TextPattern-klasser som beskrivs i den här översikten kräver dock vissa specifika säkerhetsöverväganden.

  • Microsoft UI Automation-textprovidrar tillhandahåller skrivskyddade gränssnitt och ger inte möjlighet att ändra den befintliga texten i en kontroll.

  • UI Automation-klienter kan bara använda Microsoft UI Automation om de är helt "betrodda". Ett exempel på detta är det skyddade inloggningsskrivbordet, där endast kända och betrodda program kan köras.

  • Utvecklare av UI Automation-leverantörer bör vara medvetna om att all information som de väljer att exponera i sina kontroller via Microsoft UI Automation i stort sett är offentlig och fullt tillgänglig med annan kod. Microsoft UI Automation gör inga ansträngningar för att fastställa tillförlitligheten för någon UI Automation-klient och därför bör UI Automation-providern inte exponera skyddat innehåll eller känslig textinformation (till exempel lösenordsfält).

  • En av de viktigaste säkerhetsändringarna för Windows Vista kallas i stort sett "Säker indata" som omfattar tekniker som lua(eller begränsade) användarkonton (LUA) och UIPI (Privilege Level Isolation).

    • UIPI förhindrar att ett program styr och/eller övervakar ett annat mer "privilegierat" program, vilket förhindrar korsprocessfönsterattacker som förfalskar användarindata.

    • LUA anger gränser för behörigheter för program som körs av användare i gruppen Administratörer. Program har inte nödvändigtvis administratörsbehörighet, utan körs i stället med minsta möjliga behörighet. Det kan därför finnas vissa begränsningar som tillämpas i LUA-scenarier. Framför allt strängtrunkering (inklusive TextPattern-strängar), där det kan vara nödvändigt att begränsa storleken på strängar som hämtas från program på administratörsnivå så att de inte tvingas allokera minne till den punkt då programmet inaktiveras.

Prestanda

Eftersom TextPattern förlitar sig på korsprocessanrop för de flesta av dess funktioner tillhandahåller det inte någon cachelagringsmekanism för att förbättra prestanda vid bearbetning av innehåll. Detta skiljer sig från andra kontrollmönster i Microsoft UI Automation som kan nås med hjälp av GetCachedPattern metoderna eller TryGetCachedPattern .

En taktik för att förbättra prestanda är att se till att UI Automation-klienter försöker hämta textblock med måttlig storlek med hjälp GetTextav . GetText(1)-anrop medför till exempel korsprocessträffar för varje tecken, medan ett GetText(-1)-anrop medför en korsprocessträff, men kan ha hög svarstid beroende på textproviderns storlek.

TextPattern-terminologi

Attribut
En formateringsegenskaper för ett textintervall (till exempel IsItalicAttribute eller FontNameAttribute).

Degenererat intervall
Ett degenererat intervall är ett tomt textintervall eller ett textområde med noll tecken. För kontrollmönstret TextPattern anses textinfogningspunkten (eller systemvårdspunkten) vara ett degenererat intervall. Om ingen text är markerad GetSelection returnerar ett degenererat intervall vid textinfogningspunkten och RangeFromPoint returnerar ett degenererat intervall som startslutpunkt. RangeFromChild och GetVisibleRanges kan returnera degenererade intervall när textprovidern inte kan hitta några textintervall som matchar det angivna villkoret. Det här degenererade intervallet kan användas som en startslutpunkt i textprovidern. FindText och FindAttribute returnera en null-referens (Nothing i Microsoft Visual Basic .NET) för att undvika förvirring med ett identifierat intervall jämfört med ett degenererat intervall.

Inbäddat objekt
Det finns två typer av inbäddade objekt i UI Automation-textmodellen. De består av textbaserade innehållselement som hyperlänkar eller tabeller och kontrollelement som bilder och knappar. Mer detaljerad information finns i Access Embedded Objects Using UI Automation (Åtkomst till inbäddade objekt med UI Automation).

Slutpunkt
Det absoluta Start eller End punkt för ett textintervall i en textcontainer.

TextPatternRangeEndpoints (start och slut). Följande illustrerar en uppsättning start- och slutpunkter.

Textrange
En representation av ett textintervall, med start- och slutpunkter, i en textcontainer, inklusive alla associerade attribut och funktioner.

TextUnit
En fördefinierad textenhet (tecken, ord, rad eller stycke) som används för att navigera genom logiska segment i ett textintervall.

Se även