Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Замечание
Эта документация предназначена для разработчиков .NET Framework, которые хотят использовать управляемые классы автоматизации пользовательского интерфейса, определенные в пространстве имен System.Windows.Automation. Последние сведения об автоматизации пользовательского интерфейса см. в разделе API автоматизации Windows: автоматизация пользовательского интерфейса.
В этом обзоре описывается, как использовать службу автоматизации пользовательского интерфейса Майкрософт для предоставления текстового содержимого, включая атрибуты формата и стиля, элементов управления текстом на платформах, поддерживаемых службой автоматизации пользовательского интерфейса. К этим элементам управления относятся, но не ограничиваются, Microsoft .NET Framework TextBox и их эквивалентами Win32 RichTextBox.
Предоставление текстового содержимого элемента управления осуществляется с помощью TextPattern шаблона элемента управления, представляющего содержимое текстового контейнера в виде текстового потока. В свою очередь, TextPattern требуется поддержка TextPatternRange класса для предоставления атрибутов формата и стиля. TextPatternRange поддерживает TextPattern, представляя непрерывные или несколько несвязанных диапазонов текста в текстовом контейнере с коллекцией конечных точек Start и End. TextPatternRange поддерживает такие функции, как выбор, сравнение, извлечение и обход.
Замечание
Классы TextPattern не предоставляют средства для вставки или изменения текста. Однако в зависимости от элемента управления это может выполняться автоматизацией ValuePattern пользовательского интерфейса или прямым вводом клавиатуры. См. пример вставки текста в TextPattern для ознакомления.
Функциональные возможности, описанные в этом обзоре, жизненно важны для вспомогательных поставщиков технологий и их конечных пользователей. Вспомогательные технологии могут использовать автоматизацию пользовательского интерфейса с целью сбора полной информации о форматировании текста для пользователя и обеспечения программной навигации и выделения текста TextUnit (символ, слово, строка или абзац).
UI Automation TextPattern против Text Services Framework
Text Services Framework (TSF) — это простая и масштабируемая системная платформа, которая позволяет службам естественного языка и расширенному вводу текста на рабочем столе и в приложениях. Помимо предоставления интерфейсов для приложений для предоставления их текстового хранилища, он также поддерживает метаданные для этого текстового хранилища.
Однако TSF был разработан для приложений, которые должны вводить входные данные в сценарии с учетом контекста, в то время как TextPattern это решение только для чтения (с ограниченным обходным решением, отмеченным выше) предназначено для обеспечения оптимизированного доступа к текстовому хранилищу для экранных считывателей и устройств для Брайля.
Короче говоря, доступные технологии, требующие доступа только для чтения к текстовому хранилищу, могут использовать TextPattern, но потребуется более сложная функциональность TSF для ввода с учетом контекста.
Типы элементов управления
Текст
Элемент управления Text — это базовый элемент, представляющий фрагмент текста на экране.
Автономный текстовый элемент управления можно использовать как метку или статический текст в форме. Элементы управления текстом также могут содержаться в структуре объекта ListItemTreeItem или DataItem.
Замечание
Элементы управления текстом могут не отображаться в представлении содержимого дерева автоматизации пользовательского интерфейса (см. обзор дерева автоматизации пользовательского интерфейса). Это связано с тем, что текстовые элементы управления часто отображаются через свойство Name другого элемента управления. Например, текст, используемый для метки элемента управления Edit, предоставляется с помощью свойства Name элемента управления Edit. Так как элемент управления Edit находится в представлении содержимого дерева автоматизации пользовательского интерфейса, не требуется, чтобы сам текстовый элемент был в этом представлении дерева автоматизации пользовательского интерфейса. Единственным текстом, отображаемым в представлении контента, является текст, который не является избыточной информацией. Это позволяет любой вспомогательной технологии быстро фильтровать только те фрагменты информации, которые необходимы их пользователям.
Изменить
Элементы управления редактированием позволяют пользователю просматривать и изменять одну строку текста.
Замечание
Одна строка текста может быть вложена в определенные сценарии макета.
Документ
Элементы управления документами позволяют пользователю перемещаться и получать информацию из нескольких страниц текста.
API клиента TextPattern
| Тип | Описание |
|---|---|
Класс System.Windows.Automation.TextPattern |
Точка входа для текстовой модели автоматизации пользовательского интерфейса Майкрософт. Этот класс также содержит два прослушивателя событий TextPattern, TextSelectionChangedEvent и TextChangedEvent. |
Класс System.Windows.Automation.Text.TextPatternRange |
Представление диапазона текста в текстовом контейнере, который поддерживает TextPattern. Клиенты службы автоматизации пользовательского интерфейса должны внимательно следить за текущей допустимостью диапазона текста, созданного с помощью TextPatternRange. Если исходный текст в элементе управления текстом полностью заменен новым текстом, текущий диапазон текста становится недействительным. Однако диапазон текста может по-прежнему иметь некоторую полезность, если изменяется только часть исходного текста, а базовый элемент управления текстом управляет текстовым "указателем" с привязками (или конечными точками) вместо абсолютного позиционирования символов. Клиенты могут следить за TextChangedEvent для уведомления о любых изменениях текстового содержимого, с которым они работают. |
Класс System.Windows.Automation.AutomationTextAttribute |
Используется для идентификации атрибутов форматирования текстового диапазона. |
API поставщика TextPattern
Элементы пользовательского интерфейса или элементы управления, которые поддерживают TextPattern, реализуя интерфейсы ITextProvider и ITextRangeProvider как на родном уровне, так и через прокси-серверы службы автоматизации пользовательского интерфейса Майкрософт, способны предоставлять подробную информацию об атрибутах для любого содержащегося в них текста, а также обеспечивать надежные возможности навигации.
Поставщику TextPattern не нужно поддерживать все текстовые атрибуты, если элемент управления не поддерживает какие-либо определенные атрибуты.
TextPattern Поставщик должен поддерживать функции GetSelection и Select, если элемент управления поддерживает выделение текста или размещение текстового курсора (или системного курсора) в текстовой области. Если элемент управления не поддерживает эту функцию, то не требуется поддерживать любой из этих методов. Однако элемент управления должен предоставлять тип выделения текста, который он поддерживает, реализуя SupportedTextSelection свойство.
TextPattern Поставщик всегда должен поддерживать TextUnit константы Character и Document, а также любые другие TextUnit константы, которые он может поддерживать.
Замечание
Поставщик может пропустить поддержку конкретного TextUnit, отложив до следующего наибольшего TextUnit, поддерживаемого в следующем порядке: Character, Format, Word, Line, Paragraph, Page и Document.
| API (Интерфейс программирования приложений) | Описание |
|---|---|
интерфейс ITextProvider |
Предоставляет методы, свойства и атрибуты, поддерживающие TextPattern в клиентских приложениях (см. ITextProvider). |
интерфейс ITextRangeProvider |
Представляет диапазон текста в поставщике текста (см. раздел ITextRangeProvider). |
Класс System.Windows.Automation.TextPatternIdentifiers |
Содержит значения, которые используются в качестве идентификаторов для текстовых поставщиков (см. раздел TextPatternIdentifiers). |
Безопасность
Архитектура автоматизации пользовательского интерфейса была разработана с учетом безопасности (см. обзор безопасности автоматизации пользовательского интерфейса). Однако классы TextPattern, описанные в этом обзоре, требуют некоторых конкретных соображений безопасности.
Поставщики текста службы автоматизации пользовательского интерфейса Майкрософт предоставляют интерфейсы только для чтения и не предоставляют возможность изменять существующий текст в элементе управления.
Клиенты автоматизации пользовательского интерфейса могут использовать только службу автоматизации пользовательского интерфейса Майкрософт, если они полностью надежны. Примером этого будет защищенный рабочий стол входа, где могут выполняться только известные и доверенные приложения.
Разработчикам поставщиков автоматизации пользовательского интерфейса следует учитывать, что все сведения, которые они выбирают для предоставления в своих элементах управления с помощью службы автоматизации пользовательского интерфейса Майкрософт, по сути, общедоступны и полностью доступны другим кодом. Служба автоматизации пользовательского интерфейса Майкрософт не предпринимает никаких усилий для определения надежности любого клиента автоматизации пользовательского интерфейса, поэтому поставщик службы автоматизации пользовательского интерфейса не должен предоставлять защищенное содержимое или конфиденциальную текстовую информацию (например, поля паролей).
Одним из наиболее значительных изменений в безопасности в Windows Vista именуется "Безопасный ввод", который охватывает такие технологии, как наименее привилегированные (или ограниченные) учетные записи пользователей (LUA) и изоляция уровня привилегий пользовательского интерфейса (UIPI).
UIPI запрещает одной программе контролировать и/или отслеживать другую программу с более высокими привилегиями, предотвращая атаки с межпроцессным взаимодействием через оконные сообщения, которые искажают ввод данных пользователем.
LUA задает ограничения на привилегии приложений, выполняемых пользователями в группе "Администраторы". Приложения не обязательно будут иметь права администратора, но вместо этого будут выполняться с минимальными привилегиями. В результате в сценариях LUA могут быть применены некоторые ограничения. Особенно усечение строк (включая строки TextPattern), когда нужно ограничить размер строк, извлекаемых из приложений уровня администратора, чтобы избежать отключения приложения из-за нагрузки на память.
Производительность
Так как TextPattern использует межпроцессные вызовы для большинства функций, он не предоставляет механизм кэширования для повышения производительности при обработке содержимого. Это отличается от других шаблонов управления в службе автоматизации пользовательского интерфейса Майкрософт, к которым можно получить доступ с помощью методов GetCachedPattern или TryGetCachedPattern.
Одна из тактик для повышения производительности заключается в том, чтобы клиенты автоматизации пользовательского интерфейса пытались получить умеренно размерные блоки текста с помощью GetText. Например, вызовы GetText(1) будут вызывать перекрестные обращения для каждого символа, тогда как один вызов GetText(-1) будет вызывать одно перекрестное обращение, но может иметь высокую задержку в зависимости от того, насколько велик поставщик текста.
Терминология TextPattern
Атрибут
Характеристика форматирования текстового диапазона (например, IsItalicAttribute или FontNameAttribute).
Дегенеративный диапазон
Диапазон вырожденности — это пустой диапазон текста или диапазон с нулевым количеством символов. В целях шаблона элемента управления TextPattern точка вставки текста (или системный курсор) считается вырожденным диапазоном. Если текст не выбран, GetSelection возвращает дегенерный диапазон в точке вставки текста и RangeFromPoint возвращает дегенерирующий диапазон в качестве начальной конечной точки.
RangeFromChild и GetVisibleRanges может возвращать дегенерные диапазоны, когда поставщик текста не может найти какие-либо текстовые диапазоны, соответствующие заданному условию. Этот вырожденный диапазон можно использовать в качестве конечной точки в текстовом поставщике.
FindText и FindAttribute возвращают пустую ссылку (Nothing в Microsoft Visual Basic .NET), чтобы избежать путаницы с обнаруженным диапазоном по сравнению с вырожденным диапазоном.
Внедренный объект
В текстовой модели автоматизации пользовательского интерфейса существует два типа внедренных объектов. Они состоят из текстовых элементов содержимого, таких как гиперссылки или таблицы, а также элементы управления, такие как изображения и кнопки. Более подробную информацию см. в статье Доступ к встроенным объектам с использованием UI Automation.
Конечная точка
Абсолютная точка Start или End в диапазоне текста внутри текстового контейнера.
Ниже показан набор начальных и конечных точек.
TextRange
Представление диапазона текста с начальными и конечными точками в текстовом контейнере, включая все связанные атрибуты и функции.
TextUnit
Предварительно определенная единица текста (символ, слово, строка или абзац), используемая для навигации по логическим сегментам диапазона текста.
См. также
- Шаблоны элементов управления автоматизации пользовательского интерфейса для клиентов
- Обзор шаблонов управления автоматизацией пользовательского интерфейса
- Обзор дерева автоматизации пользовательского интерфейса
- Использование кэширования в автоматизации пользовательского интерфейса
- Поддержка шаблонов управления в поставщике автоматизации пользовательского интерфейса
- Сопоставление шаблонов управления для клиентов автоматизации пользовательского интерфейса
- Фреймворк текстовых служб