Compartir a través de


Información general sobre el modelo de texto de UI Automation

NotaNota

Esta documentación está dirigida a desarrolladores de .NET Framework que desean usar las clases administradas de UI Automation definidas en el espacio de nombres System.Windows.Automation.Para obtener información actualizada sobre UI Automation, vea Windows Automation API: UI Automation.

En esta introducción se describe cómo utilizar la Microsoft UI Automation para exponer el contenido de texto, incluidos los atributos de formato y estilo, de los controles de texto en las plataformas admitidas por UI Automation. Estos controles incluyen, entre otros, los controles TextBox y RichTextBox de Microsoft .NET Framework así como sus equivalentes en Win32.

La exposición del contenido de texto de un control se lleva a cabo mediante el patrón de control TextPattern, que representa el contenido de un contenedor de texto como una secuencia de texto. Por su parte, TextPattern necesita la compatibilidad de la clase TextPatternRange para exponer atributos de formato y estilo. TextPatternRange admite TextPattern mediante la representación de intervalos de texto contiguos o varios intervalos de texto aislados en un contenedor de texto con una colección de extremos Start y End. TextPatternRange admite funcionalidades tales como selección, comparación, recuperación y exploración transversal.

NotaNota

Las clases TextPattern no proporcionan un medio para insertar o modificar texto.Sin embargo, dependiendo del control, esto se puede lograr mediante el modelo ValuePattern de UI Automation o por medio de acciones del teclado directas.Para obtener un ejemplo, vea ValuePattern Insert Text Sample.

La funcionalidad descrita en esta introducción es vital para los proveedores de tecnología de asistencia y sus usuarios finales. Las tecnologías de asistencia pueden utilizar la UI Automation para recopilar información completa sobre el formato de texto para el usuario y proporcionar posibilidades de navegación mediante programación y selección de texto mediante TextUnit (carácter, palabra, línea o párrafo).

Este tema contiene las secciones siguientes.

  • Comparación entre el modelo de texto de automatización de la interfaz de usuario yText Services Framework
  • Tipos de controles
  • Interfaces de programación de aplicaciones de cliente de TextPattern
  • Interfaces de programación de aplicaciones de proveedor de TextPattern
  • Seguridad
  • Rendimiento
  • Terminología de TextPattern
  • Temas relacionados

Comparación entre el modelo de texto de automatización de la interfaz de usuario yText Services Framework

Text Services Framework (TSF) es un marco de trabajo del sistema simple y escalable que habilita los servicios de lenguaje natural y la entrada de texto avanzada en el escritorio y en las aplicaciones. Además de proporcionar interfaces para que las aplicaciones expongan su almacén de texto, también admite metadatos para ese almacén de texto.

Sin embargo, TSF se diseñó para aplicaciones que necesitan insertar la entrada en escenarios de reconocimiento del contexto, mientras que TextPattern es una solución de sólo lectura (con la limitación indicada anteriormente) diseñada para proporcionar acceso optimizado a un almacén de texto para los lectores de pantalla y los dispositivos Braille.

Es decir, las tecnologías de accesibilidad que requieren acceso de sólo lectura a un almacén de texto pueden utilizar TextPattern, pero necesitarán la funcionalidad más compleja de TSF para la entrada en escenarios con reconocimiento del contexto.

Tipos de controles

Text

El control de texto es el elemento básico que representa un fragmento de texto en la pantalla.

Un control de texto independiente puede usarse como etiqueta o como texto estático en un formulario. Los controles de texto también pueden incluirse en la estructura de un campo ListItem, TreeItem o DataItem.

NotaNota

Puede que los controles de texto no aparezcan en la vista de contenido del árbol de UI Automation (vea Información general sobre el árbol de la UI Automation).Esto se debe a que los controles de texto se muestran a menudo mediante la propiedad Name de otro control.Por ejemplo, el texto que se utiliza para etiquetar un control de edición se expone mediante la propiedad Name del control de edición.Dado que el control de edición está en la vista de contenido del árbol de UI Automation, no es necesario que el propio elemento de texto esté en esa vista del árbol de UI Automation.El único texto que se presenta en la vista de contenido es aquél que no constituya información redundante.Esto permite que las tecnologías de asistencia filtren rápidamente sólo por aquellos fragmentos de información que los usuarios necesitan.

Edición

Los controles de edición permiten al usuario ver y editar una línea de texto única.

NotaNota

La línea de texto única puede ajustarse y dividirse en dos en algunos escenarios de diseño.

Documento

Los controles de documento permiten al usuario navegar por varias páginas de texto y obtener información de ellas.

Interfaces de programación de aplicaciones de cliente de TextPattern

System.Windows.Automation.TextPattern Class

Punto de entrada del modelo de texto de Microsoft UI Automation.

Esta clase también contiene los dos agentes de escucha de eventos de TextPattern: TextSelectionChangedEvent y TextChangedEvent.

System.Windows.Automation.Text.TextPatternRange Class

Representación de un intervalo de texto dentro de un contenedor de texto que admite TextPattern.

Los clientes de Automatización de la interfaz de usuario deben prestar atención a la validez actual de un intervalo de texto creado mediante TextPatternRange. Si el texto original del control de texto se reemplaza en su totalidad por texto nuevo, el intervalo de texto actual deja de ser válido. Sin embargo, puede que el intervalo de texto siga siendo viable si únicamente se cambia una parte del texto original y el control de texto subyacente administra su "puntero" al texto mediante delimitadores (o extremos), en lugar de hacerlo mediante las posiciones absolutas de los caracteres.

Los clientes pueden realizar escuchas de eventos TextChangedEvent para comprobar si se notifica cualquier cambio en el contenido textual con el que trabajan.

System.Windows.Automation.AutomationTextAttribute Class

Se utiliza para identificar los atributos de formato de un intervalo de texto.

Interfaces de programación de aplicaciones de proveedor de TextPattern

Los elementos o controles de la interfaz de usuario que admiten TextPattern mediante la implementación de las interfaces ITextProvider e ITextRangeProvider, ya sea de manera nativa o mediante un proxy de Microsoft UI Automation, son capaces de exponer la información de atributos detallada de cualquier texto que contengan, además de proporcionar funciones de navegación robustas.

Un proveedor de TextPattern no tiene que admitir todos los atributos de texto si el control carece de compatibilidad con algún atributo concreto.

Un proveedor de TextPattern debe admitir las funciones GetSelection y Select si el control admite la selección de texto o la colocación del cursor de texto (o símbolo de inserción) en el área de texto. Si el control no admite esta funcionalidad, no tiene por qué admitir ninguno de estos métodos. Sin embargo, el control debe exponer el tipo de selección de texto que admite implementando la propiedad SupportedTextSelection.

Un proveedor de TextPattern siempre debe admitir las constantes de TextUnit Character y Document, así como cualquier otra constante de TextUnit que sea capaz de admitir.

NotaNota

El proveedor puede omitir la compatibilidad con una enumeración TextUnit concreta si difiere esta compatibilidad a la siguiente TextUnit inmediatamente superior, en el orden siguiente: Character, Format, Word, Line, Paragraph, Page y Document.

ITextProvider Interface

Expone los métodos, las propiedades y los atributos que admiten TextPattern en las aplicaciones cliente (vea ITextProvider).

ITextRangeProvider Interface

Representa un intervalo de texto en un proveedor de texto (vea ITextRangeProvider).

System.Windows.Automation.TextPatternIdentifiers Class

Contiene valores que se utilizan como identificadores para los proveedores de texto (vea TextPatternIdentifiers).

Seguridad

La arquitectura de UI Automation se ha diseñado teniendo en cuenta la seguridad en todo momento (vea Información general sobre la seguridad de UI Automation). Sin embargo, las clases TextPattern que se describen en esta introducción requieren que se tengan en cuenta ciertas consideraciones de seguridad.

  • Los proveedores de texto de Microsoft UI Automation proporcionan interfaces de sólo lectura y no ofrecen la capacidad de cambiar el texto existente en un control.

  • Los clientes de Automatización de la interfaz de usuario sólo puede utilizar la Microsoft UI Automation si son de plena confianza. Un ejemplo de esto sería el escritorio de inicio de sesión protegido, donde sólo pueden ejecutarse aplicaciones conocidas que sean de confianza.

  • Los desarrolladores de proveedores de Automatización de la interfaz de usuario deben ser conscientes de que toda la información que deciden exponer en sus controles a través de Microsoft UI Automation es pública y totalmente accesible a través de otro código. Microsoft UI Automation no se encarga de determinar la confiabilidad de los clientes de Automatización de la interfaz de usuario y, por consiguiente, el proveedor de Automatización de la interfaz de usuario no debe exponer contenido protegido ni información textual confidencial (como campos de contraseña).

  • Uno de los cambios de seguridad más significativos incluidos en Windows Vista se denomina de manera general "Entrada segura" y abarca tecnologías tales como las cuentas de usuario con privilegios mínimos (o limitados) (LUA) y el aislamiento de privilegios en la interfaz de usuario (UIPI).

    • UIPI evita que un programa controle o supervise otro programa con más "privilegios", con lo que se evitan los ataques con mensajes de ventanas entre procesos que suplantan los datos proporcionados por el usuario.

    • LUA establece límites con respecto a los privilegios de las aplicaciones ejecutadas por los usuarios del grupo Administradores. Las aplicaciones no tienen necesariamente privilegios de administrador, sino que se ejecutan con los mínimos privilegios necesarios. En consecuencia, puede que se apliquen ciertas restricciones en los escenarios de LUA. En particular, cabe destacar el truncado de cadenas (incluidas las de TextPattern), donde puede ser necesario limitar el tamaño de las cadenas que se recuperan de las aplicaciones del nivel de administrador, para que éstas no se vean obligadas a asignar memoria hasta el punto de tener que deshabilitar la aplicación.

Rendimiento

Dado que TextPattern se basa en llamadas entre los procesos para la mayor parte de su funcionalidad, no proporciona un mecanismo de almacenamiento en caché para mejorar el rendimiento al procesar el contenido. En esto se diferencia de otros patrones de control de Microsoft UI Automation a los que se puede tener acceso mediante los métodos GetCachedPattern o TryGetCachedPattern.

Una táctica para mejorar el rendimiento es asegurarse de que cada cliente de Automatización de la interfaz de usuario intente recuperar bloques de texto de dimensiones moderadas mediante GetText. Por ejemplo, las llamadas a GetText (1) darán lugar a referencias entre los procesos para cada carácter, mientras que una llamada a GetText (-1) dará lugar a una referencia entre procesos, pero puede registrar una latencia elevada según el tamaño del proveedor de texto.

Terminología de TextPattern

  • Atributo
    Característica de formato de un intervalo de texto (por ejemplo, IsItalicAttribute o FontNameAttribute).

  • Intervalo degenerado
    Un intervalo degenerado es un intervalo de texto vacío o con cero caracteres. A efectos del patrón de control TextPattern, el punto de inserción de texto (o símbolo de inserción) se considera un intervalo degenerado. Si no se selecciona texto, GetSelectiondevuelve un intervalo degenerado en el punto de inserción de texto y RangeFromPoint devuelve un intervalo degenerado como extremo inicial. RangeFromChild y GetVisibleRanges pueden devolver intervalos degenerados cuando el proveedor de texto no encuentra ningún intervalo de texto que coincida con la condición especificada. Este intervalo degenerado se puede utilizar como extremo inicial dentro del proveedor de texto. FindText y FindAttribute devuelven una referencia NULL (Nothing en Microsoft Visual Basic .NET) para evitar la confusión entre un intervalo detectado y un intervalo degenerado.

  • Objeto incrustado
    Hay dos tipos de objetos incrustados en el modelo de texto de UI Automation. Están compuestos de elementos de contenido basados en texto, como hipervínculos o tablas, y elementos de control, como imágenes y botones. Para obtener información más detallada, vea Acceso a objetos incrustados mediante la UI Automation.

  • Extremo
    Punto inicial (Start) o final (End) absoluto de un intervalo de texto dentro de un contenedor de texto.

A continuación se muestra un conjunto de puntos iniciales y finales.

TextPatternRangeEndpoints (inicial y final).

  • TextRange
    Representación de un intervalo de texto, con sus extremos inicial y final, en un contenedor de texto que incluye todos los atributos y funcionalidades asociados.

  • TextUnit
    Unidad predefinida de texto (carácter, palabra, línea o párrafo) utilizada para navegar por los segmentos lógicos de un intervalo de texto.

Vea también

Tareas

Utilizar el almacenamiento en caché en la UI Automation

Patrones de control compatibles en un proveedor de UI Automation

Conceptos

Patrones de controles de UI Automation para clientes

Información general acerca de los patrones de control de automatización de la interfaz de usuario

Información general sobre el árbol de la UI Automation

Asignación de patrones de controles para clientes de UI Automation

Otros recursos

Text Services Framework