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

Nota

Esta documentación está dirigida a los desarrolladores de .NET Framework que quieran usar las clases de automatización de la interfaz de usuario administradas definidas en el espacio de nombres System.Windows.Automation. Para ver la información más reciente acerca de la automatización de la interfaz de usuario, consulte Windows Automation API: automatización de la interfaz de usuario.

Esta introducción describe cómo usar la automatización de la interfaz de usuario de Microsoft para exponer el contenido textual, incluidos los atributos de estilo y formato, de los controles de texto en plataformas compatibles con la automatización de la interfaz de usuario. Estos controles incluyen, entre otros, los controles TextBox y RichTextBox de Microsoft .NET Framework, así como sus equivalentes de Win32.

Exponer el contenido textual de un control se logra mediante el uso del patrón de control TextPattern , que representa el contenido de un contenedor de texto como una secuencia de texto. A su vez, TextPattern requiere el soporte de la clase TextPatternRange para exponer atributos de formato y estilo. TextPatternRange da soporte a TextPattern mediante la representación de intervalos de texto contiguos, múltiples o no contiguos en un contenedor de texto con una colección de extremos Start y End . TextPatternRange admite la funcionalidad como selección, comparación, recuperación y exploración transversal.

Nota

Las clase TextPattern no proporcionan un medio para insertar o modificar texto. Sin embargo, en función del control, esto se puede lograr mediante el elemento ValuePattern de la automatización de la interfaz de usuario o mediante acciones del teclado directas. Vea TextPattern Insert Text Sample para obtener un ejemplo.

La funcionalidad descrita en este artículo es vital para los proveedores de tecnología de asistencia y sus usuarios finales. Las tecnologías de asistencia pueden usar la automatización de la interfaz de usuario para recopilar información de formato de texto completa para el usuario y proporcionar navegación y selección de texto mediante programación por cada TextUnit (carácter, palabra, línea o párrafo).

TextPattern de automatización de la interfaz de usuario versus Text Services Framework (TSF)

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

Sin embargo, TSF se diseñó para aplicaciones que tienen que insertar entradas en escenarios con contexto, mientras que TextPattern es una solución de solo lectura (con la solución limitada apuntada anteriormente) que pretende proporcionar acceso optimizado a un almacén de texto para los lectores de pantalla y dispositivos Braille.

En resumen, las tecnologías de accesibilidad que requieren acceso de solo lectura a un almacén de texto pueden usar TextPattern, pero necesitarán la funcionalidad más compleja de TSF para la entrada con contexto.

Tipos de controles

Texto

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

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

Nota

Es posible que los controles de texto no aparezcan en la vista de contenido del árbol de automatización de la interfaz de usuario (consulte Información general sobre el árbol de automatización de la interfaz de usuario). Esto se debe a que los controles de texto se muestran a menudo a través de la propiedad Name de otro control. Por ejemplo, el texto que se usa para etiquetar un control de edición (Edit) se expone a través de la propiedad Name del control de edición. Dado que el control de edición se encuentra en la vista de contenido del árbol de automatización de la interfaz de usuario, no es necesario que el propio elemento de texto esté en esa vista del árbol de automatización de la interfaz de usuario. El único texto que se muestra en la vista de contenido es el texto que no es información redundante. Esto permite a las tecnologías de asistencia filtrar rápidamente solo los fragmentos de información que necesitan los usuarios.

Editar

Los controles de edición (Edit) permiten al usuario ver y editar una sola línea de texto.

Nota

La única línea de texto puede encapsularse en ciertos escenarios de diseño.

Documento

Los controles de documento permiten a un usuario navegar y obtener información de varias páginas de texto.

API de cliente de TextPattern

Tipo Descripción
Clase System.Windows.Automation.TextPattern Punto de entrada del modelo de texto de automatización de la interfaz de usuario de Microsoft.

Esta clase también contiene las dos escuchas de eventos de TextPattern , TextSelectionChangedEvent y TextChangedEvent.
Clase System.Windows.Automation.Text.TextPatternRange Es la 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 debe tener cuidado con la validez actual de un intervalo de texto creado con TextPatternRange. Si el texto original del control de texto se reemplaza totalmente por el nuevo texto, el intervalo de texto actual deja de ser válido. Sin embargo, puede que el intervalo de texto aún tenga alguna viabilidad si únicamente se cambia una parte del texto original y el control de texto subyacente está administrando su “puntero” de texto con delimitadores (o extremos) en lugar de con la posición de carácter absoluto.

Los clientes pueden realizar escuchas de un TextChangedEvent para recibir notificaciones de los cambios realizados en el contenido textual con el que trabajan.
Clase System.Windows.Automation.AutomationTextAttribute Se usa para identificar los atributos de formato de un intervalo de texto.

API de proveedor de TextPattern

Los controles o elementos de la interfaz de usuario que admiten TextPattern al implementar las interfaces ITextProvider e ITextRangeProvider, ya sea de forma nativa o mediante los proxy de la automatización de la interfaz de usuario de Microsoft, son capaces de exponer información detallada de los atributos de cualquier texto que contengan, además de proporcionar funcionalidades de navegación sólidas.

Un proveedor de TextPattern no tiene que admitir todos los atributos de texto si el control no es compatible 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 ubicación del cursor de texto (o símbolo de inserción) dentro del área de texto. Si el control no admite esta funcionalidad, no es necesario que admita ninguno de estos métodos. Sin embargo, el control debe implementar la propiedad SupportedTextSelection a fin de exponer el tipo de selección de texto que admite.

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

Nota

El proveedor puede omitir la compatibilidad para un determinado TextUnit si se aplaza al siguiente mayor TextUnit compatible en el orden siguiente: Character, Format, Word, Line, Paragraph, Pagey Document.

API Descripción
ITextProvider (interfaz) Expone métodos, propiedades y los atributos que admiten TextPattern en las aplicaciones cliente (consulte ITextProvider).
ITextRangeProvider (interfaz) Representa un intervalo de texto en un proveedor de texto (consulte ITextRangeProvider).
Clase System.Windows.Automation.TextPatternIdentifiers Contiene valores que se usan como identificadores para los proveedores de texto (consulte TextPatternIdentifiers).

Seguridad

La arquitectura de la automatización de la interfaz de usuario se diseñó teniendo en cuenta la seguridad (consulte Información general sobre la seguridad de la automatización de la interfaz de usuario). Sin embargo, las clases TextPattern descritas en este artículo requieren algunas consideraciones de seguridad específicas.

  • Los proveedores de texto de la automatización de la interfaz de usuario de Microsoft proporcionan interfaces de solo lectura y no proporcionan la capacidad de cambiar el texto existente en un control.

  • Los clientes de la automatización de la interfaz de usuario solo pueden usar la automatización de la interfaz de usuario de Microsoft si son de plena "confianza". Un ejemplo de esto sería el escritorio de inicio de sesión protegido, donde tan solo pueden ejecutarse aplicaciones conocidas y de confianza.

  • Los desarrolladores de proveedores de automatización de la interfaz de usuario deben tener en cuenta que toda la información que elijan exponer en sus controles mediante la automatización de la interfaz de usuario de Microsoft es básicamente pública y totalmente accesible por otro código. La automatización de la interfaz de usuario de Microsoft no hace ningún esfuerzo para determinar la confiabilidad de ningún cliente de automatización de la interfaz de usuario y, por tanto, el proveedor de automatización de la interfaz de usuario no debe exponer información textual confidencial o contenido protegido (por ejemplo, los campos de contraseña).

  • Uno de los cambios más importantes en la seguridad de Windows Vista se conoce ampliamente como "Entrada segura" y abarca tecnologías tales como las cuentas de usuario de privilegios mínimos(o limitados) (LUA) y el aislamiento de nivel de privilegios de interfaz de usuario (UIPI).

    • UIPI evita que un programa controle o supervise otro programa “con más privilegios”, lo que impide los ataques de mensajes de ventanas entre procesos que suplantan la entrada de los usuarios.

    • LUA establece límites en los privilegios de las aplicaciones ejecutadas por los usuarios del grupo Administradores. Las aplicaciones no tienen necesariamente privilegios de administrador, sino que en su lugar se ejecutarán con los privilegios mínimos necesarios. Como consecuencia, puede haber algunas restricciones que se apliquen en escenarios LUA. En particular, el truncamiento de cadenas (incluidas cadenas TextPattern), donde puede ser necesario limitar el tamaño de las cadenas que se recuperan desde las aplicaciones de nivel de administrador, de modo que no se vean obligadas a asignar memoria hasta el punto de deshabilitar la aplicación.

Rendimiento

Dado la mayor parte de la funcionalidad de TextPattern se basa en las llamadas entre procesos, no proporciona un mecanismo de almacenamiento en caché para mejorar el rendimiento al procesar el contenido. Esto es diferente a otros patrones de control de la automatización de la interfaz de usuario de Microsoft 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 los clientes de automatización de la interfaz de usuario intentan recuperar bloques de texto de tamaño moderado con GetText. Por ejemplo, las llamadas a GetText(1) incurrirán en varios resultados entre procesos para cada carácter, mientras que una llamada a GetText (-1) incurrirá en un solo resultado entre procesos, pero puede tener una latencia elevada según el tamaño del proveedor de texto.

Terminología de TextPattern

Atributo
Es una 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. Para los fines 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 hay texto seleccionado, GetSelection devolverá un intervalo degenerado en el punto de inserción de texto y RangeFromPoint devolverá 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 puede usarse como extremo inicial dentro del proveedor de texto. FindText y FindAttribute devuelven una referencia nula (Nothing en Microsoft Visual Basic .NET) para evitar la confusión entre un intervalo descubierto y un intervalo degenerado.

Objeto incrustado
Hay dos tipos de objetos insertados en el modelo de texto de la automatización de la interfaz de usuario. que están formados por elementos de contenido basado en texto, como hipervínculos o tablas, y elementos de control, como imágenes y botones. Para información detallada, vea Access Embedded Objects Using UI Automation.

Punto de conexión
Es el punto Start o End absoluto de un intervalo de texto dentro de un contenedor de texto.

TextPatternRangeEndpoints (inicial y final). A continuación, se muestra un conjunto de puntos iniciales y finales.

TextRange
Es una representación de un intervalo de texto, con puntos de inicio y final, en un contenedor de texto que incluye todos los atributos y la funcionalidad asociados.

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

Consulte también