Общие сведения о TextPattern модели автоматизации пользовательского интерфейса
Примечание |
---|
Эта документация предназначена для разработчиков на платформе .NET Framework, которым требуется использовать управляемые классы UI Automation, определенные в пространстве имен System.Windows.Automation.Последние сведения о UI Automation см. на веб-странице Windows Automation API: UI Automation. |
Этот обзор описывает использование Microsoft UI Automation для предоставления текстового содержимого, включая атрибуты формата и стиля, а также текстовых элементов управления в поддерживаемых UI Automation платформах. Эти элементы управления включают в себя, в частности, элементы TextBox и RichTextBox платформы Microsoft .NET Framework и их эквиваленты Win32, а также некоторые другие элементы.
Предоставление текстового содержимого элемента управления осуществляется с помощью TextPattern шаблона элемента управления, который представляет содержимое текстового контейнера в качестве текстового потока. Шаблон TextPattern, в свою очередь, требует поддержки от класса TextPatternRange для представления атрибутов формата и стиля. Класс TextPatternRange поддерживает шаблон TextPattern, представляя смежные или многочисленные раздельные текстовые диапазоны в текстовом контейнере с коллекцией конечных точек Start и End. Класс TextPatternRange поддерживает такие функциональные возможности, как выделение, сравнение, извлечение и обход.
Примечание |
---|
Классы TextPattern не предоставляют возможностей для вставки или изменения текста.Однако в зависимости от элемента управления эти действия можно выполнять с помощью шаблона ValuePattern UI Automation или посредством ввода с клавиатуры.Пример см. в разделе ValuePattern Insert Text Sample. |
Функциональные возможности, описанные в этом обзоре, очень важны для поставщиков вспомогательной технологии и их пользователей. Вспомогательные технологии могут использовать UI Automation для сбора полной информации о форматировании текста для пользователя и предоставить программный переход и выбор текста с помощью TextUnit (символ, слово, строка или абзац).
В этом разделе содержатся следующие подразделы.
- Сравнение TextPattern модели автоматизации пользовательского интерфейса сПлатформа Text Services
- Типы элементов управления
- API клиента TextPattern
- API поставщика TextPattern
- Безопасность
- Производительность
- Терминология TextPattern
- Связанные разделы
Сравнение TextPattern модели автоматизации пользовательского интерфейса сПлатформа Text Services
Text Services Framework (TSF) — это простая и масштабируемая системная структура, которая обеспечивает службы естественных языков и расширенный ввод текста на рабочем столе и в приложениях. Кроме интерфейсов для приложений для предоставления им текстового хранилища, он также поддерживает метаданные для этого текстового хранилища.
Однако, TSF был разработан для приложений, которым требуется вставлять входные данные в контекстно-зависимые сценарии, в то время как TextPattern является решением только для чтения (с ограниченными средствами устранения проблемы, указанной выше), предназначенным для обеспечения оптимизированного доступа к текстовому хранилищу для средств чтения с экрана и устройств шрифта Брайля.
Одним словом, доступные технологии, которым необходим доступ только для чтения к текстовому хранилищу, могут использовать TextPattern, но будут требовать более сложные функциональные возможности TSF для контекстно-зависимого ввода.
Типы элементов управления
Текст
Элемент управления "Текст" является базовым элементом, представляющим фрагмент текста на экране.
Отдельный текстовый элемент управления может использоваться в качестве метки или статического текста на форме. Текстовые элементы управления также могут содержаться в структуре ListItem, TreeItem или DataItem.
Примечание |
---|
Текстовые элементы управления могут отсутствовать в представлении содержимого дерева UI Automation (см. Общие сведения о дереве модели автоматизации пользовательского интерфейса).Это происходит потому, что текстовые элементы управления часто отображаются через свойство Name другого элемента управления.Например, текст, который используется для подписи элемента управления поля ввода, предоставляется через свойство Name элемента управления поля ввода.Поскольку элемент управления "Поле ввода" содержится в представлении содержимого дерева UI Automation, сам текстовый элемент может отсутствовать в представлении дерева UI Automation.В представлении содержимого может отображаться только текст, который не представляет собой лишнюю информацию.Это позволяет любой вспомогательной технологии быстро фильтровать только те части данных, которые нужны пользователям. |
Edit
Элементы управления поля ввода позволяют пользователю просматривать и редактировать одну строку текста.
Примечание |
---|
Одна строка текста может разбиваться в определенных скриптах макета. |
Документ
Элементы управления документа позволяют пользователю перемещаться и получать сведения с нескольких страниц текста.
API клиента TextPattern
System.Windows.Automation.TextPattern Class |
Точка входа для текстовой модели Microsoft UI Automation. Этот класс также содержит два прослушивателя событий TextPattern — TextSelectionChangedEvent и TextChangedEvent. |
System.Windows.Automation.Text.TextPatternRange Class |
Представление фрагмента текста внутри текстового контейнера, который поддерживает TextPattern. Клиенты автоматизации пользовательского интерфейса должны с осторожностью обращаться с текущей допустимостью текстового диапазона, созданного с помощью TextPatternRange. Если исходный текст в текстовом элементе управления полностью заменяется новым текстом, текущий диапазон текста становится недействительным. Однако текстовый диапазон может по-прежнему иметь некоторую жизнеспособность, если изменяется только часть исходного текста, а основной текстовый элемент управления управляет своим текстовым "указателем" с помощью точек привязки (или конечных точек) вместо абсолютного размещения символов. Клиенты могут ожидать передачи данных TextChangedEvent для получения уведомлений о каких-либо изменениях текстового содержимого, с которым они работают. |
System.Windows.Automation.AutomationTextAttribute Class |
Используется для идентификации атрибутов форматирования текстового диапазона. |
API поставщика TextPattern
Элементы пользовательского интерфейса или элементы управления, которые поддерживают TextPattern путем реализации интерфейсов ITextProvider и ITextRangeProvider в качестве встроенной возможности или через прокси Microsoft UI Automation, предоставляют подробную информацию об атрибуте для любого содержащегося текста, а также надежную систему переходов.
Поставщику TextPattern не требуется поддерживать все текстовые атрибуты, если элемент управления не предоставляет поддержку для каких-либо конкретных атрибутов.
Поставщик TextPattern должен поддерживать функции GetSelection и Select, если элемент управления поддерживает выделение текста или размещение текстового курсора (или системного курсора) в пределах текстовой области. Если элемент управления не поддерживает эти функциональные возможности, то ему не требуется поддерживать ни один из указанных методов. В то же время элемент управления должен предоставлять поддерживаемый тип текстового выделения путем реализации свойства SupportedTextSelection.
Поставщик TextPattern должен всегда поддерживать константы TextUnit Character и Document, равно как и любые другие константы TextUnit, которые он способен поддерживать.
Примечание |
---|
Поставщик может пропустить поддержку для определенных TextUnit, откладывая их до следующего наибольшего поддерживаемого TextUnit в следующем порядке: Character, Format, Word, Line, Paragraph, Page и Document. |
ITextProvider Interface |
Предоставляет методы, свойства и атрибуты, которые поддерживают TextPattern в клиентских приложениях (см. ITextProvider). |
ITextRangeProvider Interface |
Представляет фрагмент текста в поставщике текста (см. ITextRangeProvider). |
System.Windows.Automation.TextPatternIdentifiers Class |
Содержит значения, которые используются в качестве идентификаторов для поставщиков текста (см. TextPatternIdentifiers). |
Безопасность
Архитектура UI Automation была разработана с учетом безопасности (см. Общие сведения о безопасности модели автоматизации пользовательского интерфейса). Однако классы TextPattern, описанные в этом обзоре, требуют определенных замечаний по безопасности.
Поставщики текста Microsoft UI Automation предоставляют интерфейсы только для чтения и не предоставляют возможность изменения существующего текста в элементе управления.
Клиенты автоматизации пользовательского интерфейса могут использовать Microsoft UI Automation только в том случае, если они относятся к полностью надежным. Примером этого может служить защищенный Logon Desktop, где выполняются только известные и надежные приложения.
Разработчики поставщиков автоматизации пользовательского интерфейса должны осознавать, что все сведения, которые они предполагают представлять в своих элементах управления с помощью Microsoft UI Automation, по существу являются открытыми и полностью доступны при использовании другого кода. Microsoft UI Automation не предпринимает никаких попыток определить достоверность любого клиента автоматизации пользовательского интерфейса и, следовательно, поставщик автоматизации пользовательского интерфейса не должен предоставлять защищенное содержимое или конфиденциальную текстовую информацию (например, поля паролей).
Одним из наиболее важных изменений в системе безопасности Windows Vista является система безопасного ввода, которая включает в себя такие технологии, как учетные записи с минимальными правами доступа (LUA) и ограничение привилегий пользовательского интерфейса (UIPI).
UIPI запрещает программам управление и/или наблюдение за другими более "привилегированными" программами, предотвращая тем самым атаки посредством межпроцессного сообщения окна, которое подменяет данные, вводимые пользователем.
LUA устанавливает ограничения на права приложений, запускаемых пользователями группы "Администраторы". Приложения не обязательно будут иметь права администратора, а будут работать с наименьшими необходимыми правами. Это приводит к тому, что в скриптах LUA возможны некоторые ограничения. Наиболее часто усечение строки (включая строки TextPattern). В этом случае может потребоваться ограничить размер строк, полученных из приложений на уровне администратора, чтобы они принудительно не выделяли память до точки отключения приложения.
Производительность
Поскольку TextPattern полагется на межпроцессные вызовы для большей части его функциональных возможностей, он не предоставляет механизм кэширования для повышения производительности при обработке содержимого. Это является отличием от других шаблонов элементов управления в Microsoft UI Automation, к которым можно получить доступ с помощью методов 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
Предварительно определенная единица текста (символ, слово, строка или абзац), используемая для переходов между логическими сегментами текстового диапазона.
См. также
Задачи
Использование кэширования в модели автоматизации пользовательского интерфейса
Основные понятия
Шаблоны элементов управления модели автоматизации пользовательского интерфейса для клиентов
Общие сведения о шаблонах элементов управления модели автоматизации пользовательского интерфейса
Общие сведения о дереве модели автоматизации пользовательского интерфейса
Сопоставление шаблона элемента управления для клиентов автоматизации пользовательского интерфейса