Compartilhar via


Visão geral de TextPattern de automação da interface do usuário

Observação

Esta documentação destina-se a desenvolvedores de .NET Framework que querem usar as classes da Automação da Interface do Usuário gerenciadas definidas no namespace System.Windows.Automation. Para obter as informações mais recentes sobre a Automação da Interface do Usuário, confira API de Automação do Windows: Automação da Interface do Usuário.

Essa visão geral descreve como usar a Automação da Interface do Usuário da Microsoft para expor o conteúdo textual, incluindo atributos de formato e estilo, de controles de texto em plataformas com suporte da Automação da Interface do Usuário. Esses controles incluem, mas não se limitam a, o Microsoft .NET Framework TextBox e RichTextBox, bem como os equivalentes do Win32.

Expor o conteúdo textual de um controle é feito por meio do uso do padrão de controle TextPattern, que representa o conteúdo de um contêiner de texto como um fluxo de texto. Por sua vez, TextPattern requer o suporte da classe TextPatternRange para expor atributos de formato e estilo. TextPatternRange dá suporte a TextPattern representando intervalos de texto contíguos ou múltiplos em um contêiner de texto com uma coleção de pontos de extremidade Start e End. TextPatternRange dá suporte a funcionalidades como seleção, comparação, recuperação e passagem.

Observação

As classes TextPattern não fornecem meios para inserir ou modificar texto. No entanto, dependendo do controle, isso pode ser feito pela Automação da Interface do Usuário ValuePattern ou por meio da entrada direta do teclado. Consulte o Exemplo de Texto de Inserção de TextPattern para obter um exemplo.

A funcionalidade descrita nesta visão geral é vital para fornecedores de tecnologia adaptativa e seus usuários finais. As tecnologias adaptativas podem usar a Automação da Interface do Usuário para coletar informações completas de formatação de texto para o usuário e fornecer navegação programática e seleção de texto por TextUnit (caractere, palavra, linha ou parágrafo).

TextPattern da Automação da Interface do Usuário versus Text Services Framework

O TSF (Text Services Framework) é uma estrutura de sistema simples e escalonável que habilita serviços de linguagem natural e entrada de texto avançada na área de trabalho e em aplicativos. Além de fornecer interfaces para aplicativos exporem seu repositório de texto, ele também dá suporte a metadados para esse repositório de texto.

No entanto, o TSF foi projetado para aplicativos que precisam injetar entrada em cenários com reconhecimento de contexto, enquanto TextPattern é uma solução somente leitura (com a solução alternativa limitada indicada acima) destinada a fornecer acesso otimizado a um repositório de texto para leitores de tela e dispositivos Braille.

Em suma, tecnologias acessíveis que exigem acesso somente leitura a um repositório de texto podem usar TextPattern, mas precisarão da funcionalidade mais complexa do TSF para entrada com reconhecimento de contexto.

Tipos de controle

Texto

O controle de Texto é o elemento básico que representa uma parte do texto na tela.

Um controle de texto autônomo pode ser usado como um rótulo ou como texto estático em um formulário. Os controles de texto também podem ser contidos na estrutura de um ListItem, TreeItem ou DataItem.

Observação

Os controles de texto podem não aparecer na exibição de conteúdo da árvore de Automação da Interface do Usuário (consulte Visão geral da árvore de Automação da Interface do Usuário). Isso ocorre porque os controles de texto geralmente são exibidos por meio da propriedade Name de outro controle. Por exemplo, o texto usado para rotular um controle Editar é exposto por meio da propriedade Name do controle Editar. Como o controle Editar está na exibição de conteúdo da árvore de Automação da Interface do Usuário, não é necessário que o próprio elemento de texto esteja nessa exibição da árvore de Automação da Interface do Usuário. O único texto que aparece no modo de exibição de conteúdo é o texto que não traz informações redundantes. Isso permite que qualquer tecnologia adaptativa filtre rapidamente apenas as informações de que seus usuários precisam.

Editar

Os controles de edição permitem que um usuário exiba e edite uma linha de texto.

Observação

A única linha de texto pode ser encapsulada em determinados cenários de layout.

Documento

Os controles de documento permitem que um usuário navegue e obtenha informações de várias páginas de texto.

APIs do cliente TextPattern

Tipo Descrição
Classe System.Windows.Automation.TextPattern O ponto de entrada para o modelo de texto da Automação da Interface do Usuário da Microsoft.

Essa classe também contém os dois ouvintes de eventos TextPattern, TextSelectionChangedEvent e TextChangedEvent.
Classe System.Windows.Automation.Text.TextPatternRange A representação de um intervalo de texto em um contêiner de texto que dá suporte a TextPattern.

Clientes da Automação da Interface do Usuário devem ter cuidado com a validade atual de um intervalo de texto criado usando TextPatternRange. Se o texto original no controle de texto for completamente substituído pelo novo texto, o intervalo de texto atual se tornará inválido. No entanto, o intervalo de texto ainda poderá ter alguma viabilidade se apenas parte do texto original for alterada e o controle de texto subjacente estiver gerenciando seu "ponteiro" de texto com âncoras (ou pontos de extremidade) em vez de com o posicionamento absoluto de caracteres.

Os clientes podem escutar uma TextChangedEvent para ser notificados de alterações no conteúdo textual com o qual estão trabalhando.
Classe System.Windows.Automation.AutomationTextAttribute Usada para identificar os atributos de formatação de um intervalo de texto.

APIs do provedor TextPattern

Os elementos ou controles de interface do usuário compatíveis com TextPattern por meio da implementação das interfaces ITextProvider e ITextRangeProvider, nativamente ou por meio de proxies da Automação da Interface do Usuário da Microsoft, são capazes de expor informações detalhadas de atributo para qualquer texto que contenham, além de fornecer recursos de navegação robustos.

Um provedor TextPattern não precisará dar suporte a todos os atributos de texto se o controle não tiver suporte para atributos específicos.

Um provedor TextPattern deverá dar suporte às funções GetSelection e Select se o controle der suporte à seleção de texto ou ao posicionamento do cursor de texto (ou cursor do sistema) dentro da área de texto. Se o controle não der suporte a essa funcionalidade, ele não precisará dar suporte a nenhum desses métodos. No entanto, o controle deve expor o tipo de seleção de texto a que ele dá suporte implementando a propriedade SupportedTextSelection.

Um provedor TextPattern sempre deve dar suporte às constantes TextUnitCharacter e Document, bem como a quaisquer outras constantes TextUnit que seja capaz de dar suporte.

Observação

O provedor pode ignorar o suporte para um TextUnit específico adiando para a próxima TextUnit maior com suporte na seguinte ordem: Character, Format, Word, Line, Paragraph, Pagee Document.

API Descrição
Interface ITextProvider Expõe métodos, propriedades e atributos que dão suporte a TextPattern em aplicativos cliente (consulte ITextProvider).
Interface ITextRangeProvider Representa um intervalo de texto em um provedor de texto (consulte ITextRangeProvider).
Classe System.Windows.Automation.TextPatternIdentifiers Contém valores usados como identificadores para provedores de texto (consulte TextPatternIdentifiers).

Segurança

A arquitetura da Automação da Interface do Usuário foi projetada com a segurança em mente (consulte Visão geral de segurança da Automação da Interface do Usuário). No entanto, as classes TextPattern descritas nesta visão geral exigem algumas considerações de segurança específicas.

  • Os provedores de texto da Automação da Interface do Usuário da Microsoft fornecem interfaces somente leitura e não fornecem a capacidade de alterar o texto existente em um controle.

  • Os clientes da Automação da Interface do Usuário só poderão usar a Automação da Interface do Usuário da Microsoft se forem totalmente "confiáveis". Um exemplo disso seria a Área de Trabalho de Logon protegida, em que somente aplicativos conhecidos e confiáveis podem ser executados.

  • Os desenvolvedores de provedores da Automação da Interface do Usuário devem estar cientes de que todas as informações escolhidas para expor em seus controles por meio da Automação da Interface do Usuário da Microsoft são essencialmente públicas e totalmente acessíveis por outro código. A Automação da Interface do Usuário da Microsoft não faz nenhum esforço para determinar a confiabilidade de qualquer cliente da Automação da Interface do Usuário e, portanto, o provedor da Automação da Interface do Usuário não deve expor conteúdo protegido nem informações textuais confidenciais (como campos de senha).

  • Uma das alterações mais significativas na segurança do Windows Vista é amplamente conhecida como "Entrada Segura", que abrange tecnologias como LUA (Contas de Usuário com Privilégios Mínimos ou Limitados) e UIPI (Isolamento de Nível de Privilégio da Interface do Usuário).

    • O UIPI impede que um programa controle e/ou monitore outro programa mais "privilegiado", impedindo ataques de mensagens de janela entre processos que falsificam a entrada do usuário.

    • O LUA define limites para os privilégios dos aplicativos que estão sendo executados pelos usuários no grupo Administradores. Os aplicativos não terão necessariamente privilégios de administrador, mas serão executados com os privilégios mínimos necessários. Como consequência, pode haver algumas restrições impostas em cenários de LUA. Principalmente, o truncamento de cadeias de caracteres (incluindo cadeias de caracteres TextPattern), em que pode ser necessário limitar o tamanho das cadeias de caracteres que estão sendo recuperadas de aplicativos no nível do administrador para que elas não sejam forçadas a alocar memória a ponto de desabilitar o aplicativo.

Desempenho

Como TextPattern depende de chamadas entre processos para a maior parte de sua funcionalidade, ele não fornece um mecanismo de cache para melhorar o desempenho ao processar conteúdo. Isso é diferente de outros padrões de controle na Automação da Interface do Usuário da Microsoft que podem ser acessados usando os métodos GetCachedPattern ou TryGetCachedPattern.

Uma tática para melhorar o desempenho é garantir que os clientes da Automação da Interface do Usuário tentem recuperar blocos de texto de tamanho moderado usando GetText. Por exemplo, chamadas GetText(1) incorrerão em ocorrências entre processos para cada caractere, enquanto uma chamada GetText(-1) incorrerá em uma ocorrência entre processos, mas poderá ter alta latência dependendo do tamanho do provedor de texto.

Terminologia de TextPattern

Atributo
Uma característica de formatação de um intervalo de texto (por exemplo, IsItalicAttribute ou FontNameAttribute).

Intervalo degenerado
Um intervalo degenerado é um intervalo de texto vazio ou de zero caracteres. Para fins do padrão de controle TextPattern, o ponto de inserção de texto (ou cursor do sistema) é considerado um intervalo degenerado. Se nenhum texto for selecionado, GetSelection retornará um intervalo degenerado no ponto de inserção de texto e RangeFromPoint retornará um intervalo degenerado como seu ponto de extremidade inicial. RangeFromChild e GetVisibleRanges poderão retornar intervalos degenerados quando o provedor de texto não encontrar nenhum intervalo de texto que corresponda à condição fornecida. Esse intervalo degenerado pode ser usado como um ponto de extremidade inicial dentro do provedor de texto. FindText e FindAttribute retornam uma referência nula (Nothing no Microsoft Visual Basic .NET) para evitar confusão com um intervalo descoberto versus um intervalo degenerado.

Objeto inserido
Há dois tipos de objetos inseridos no modelo de texto da Automação da Interface do Usuário. Eles consistem em elementos de conteúdo baseados em texto, como hiperlinks ou tabelas, e controlam elementos como imagens e botões. Para obter informações mais detalhadas, consulte Acessar objetos inseridos usando a Automação da Interface do Usuário.

Ponto de extremidade
O ponto Start ou End absoluto de um intervalo de texto dentro de um contêiner de texto.

TextPatternRangeEndpoints (início e término). O exemplo a seguir ilustra um conjunto de pontos de início e de término.

TextRange
Uma representação de um intervalo de texto, com pontos de início e de término, em um contêiner de texto, incluindo todos os atributos e funcionalidades associados.

TextUnit
Uma unidade predefinida de texto (caractere, palavra, linha ou parágrafo) usada para navegar por segmentos lógicos de um intervalo de texto.

Confira também