Введение в разработку скриптов для Thunder

Дата публикации:18.07.2010
Twitter Facebook Vkontakte

Содержание

  1. Введение
  2. Кратко о VBScript
  3. Главное о скриптах Thunder
  4. Основные зарезервированные переменные
  5. Основные встроенные функции
  6. Основные события
  7. Ссылки для дополнительных изысканий

Введение

На сегодняшний день среди некоммерческих программ экранного доступа под операционные системы семейства Microsoft Windows существует два полноценных варианта: NVDA и Thunder. Поскольку данные продукты разрабатываются на общественных началах в свободное от основных занятий время, то их создателям, как правила, не удаётся конкурировать с коммерческими аналогами в отношении диапазона поддерживаемых приложений. Однако из-за того, что большинство Windows-программ испытывают проблемы с доступностью для незрячих и слабовидящих пользователей ПК, встроенная поддержка базового набора софта является неотъемлемым условием полноценного screen reader-а. В виду этого, возможность пользователя самостоятельно улучшать доступность необходимого ему приложения является для некоммерческих программ ещё более актуальной, чем для их конкурентов, распространяемых за плату.

В этом отношении, программа NVDA испытывает ряд трудностей, так как в ней отсутствует возможность простого написания пользовательских скриптов, тогда как в Thunder эта функция реализована. Всё это, не смотря на общее техническое превосходство NVDA над Thunder, делает вторую более полезной в той ситуации, когда пользователь не обладает глубокими знаниями программирования и не имеет возможности приобретать коммерческое программное обеспечения, однако часто нуждается в оперативном улучшении доступности интерфейса конкретных приложений. Эта статья как раз и посвящена созданию скриптов для программы Thunder с целью увеличения доступности тех или иных программ Windows.

Данный материал не является подробным руководством, здесь лишь будет рассмотрен ряд общих вопросов создания скриптов, сделан краткий обзор особенностей программирования под Thunder, а также приведены ссылки на материалы, по которым можно получить всю остальную информацию, необходимую для овладения навыками скриптописания под эту программу экранного доступа.

Для создания скриптов к Thunder [1] используется Visual Basic Scripting Edition, также называемый VBScripts или просто VBS [4]. Это язык программирования, специально созданный для написания скриптов в среде операционных систем семейства Microsoft Windows и интерпретируемый их компонентом Windows Script Host (WSH). Именно к нему и будет относиться весь последующий материал.

Кратко о VBScript

Как известно, основным достоинством VBScript является сочетание простого языка программирования Бейсик и возможности взаимодействовать с объектами OLE-Automation, которые значительно расширяют возможности VBScript.

Все объекты OLE-Automation в VBS имеют методы и свойства. Чтобы обратиться к методу, необходимо указать объект, а через точку - метод с необходимыми параметрами. Аналогично и со свойствами, однако их можно как назначать, так и считывать в переменные и другие свойства.

Переменные в VBScript объявляются автоматически при первом их использовании в коде программы, если это не запретить директивой "Option Explicit", а константы всегда объявляются в начале скрипта. Тип переменной определяется автоматически, при присваивании ей первого значения, а её имя не может в длину превышать 255 символов.

VBS также даёт возможность работы с массивами, в которых можно хранить списки, таблицы и прочие данные. Одномерные массивы (списки) могут быть динамическими, то есть они способны изменять свою размерность в процессе работы программы.

Длина строк VBS-кода не ограничена, а регистр символов в них не играет роли. Разделение параметров осуществляется посредством пробела, причём количество идущих подряд пробелов не учитывается. Если требуется разорвать строку команды, то на месте разрыва следует поставить знак "_" (подчёркивание), а для записи комментариев в VBScript используется знак "'" (апостроф): весь текст, начиная с этого символа до конца строки, не расценивается как код программы и игнорируется.

Для более подробного изучения языка Visual Basic Scripting Edition следует обратиться к другим источникам. [5], [2].

Главное о скриптах Thunder

Файлы скриптов Thunder имеют такое же имя, как и процесс приложения, для которого они создаются, с расширением "*.lsc". Например, процесс стандартного калькулятора Windows называется "calc.exe", значит файл скриптов Thunder для Калькулятора Windows будет называться "calc.lsc".

Все скриптовые файлы Thunder располагаются в системной директории, куда он установлен, или где содержится его portable-версия. Иными словами, в той же папке, где располагается файл "Thunder.exe".

Все скрипты имеют открытый исходный код, который можно просмотреть, открыв LSC-файл в любом текстовом редакторе, например, в Блокноте (Notepad). Просмотр исходного кода существующих скриптов лучше помогает понять основные принципы их создания. Начинающему программисту скриптов Thunder имеет смысл сначала ознакомиться, например, с файлом "calc.lsc", а затем перейти к более сложным скриптам в файле "excel.lsc".

Для получения доступа к объектам Microsoft Active Accessibility (MSAA) из скриптов Thunder следует воспользоваться соответствующим функционалом Windows API [3].

Помимо стандартного функционала VBscript в скриптах к Thunder также используются специфические функции и переменные, чей краткий обзор и даётся ниже.

Основные зарезервированные переменные

  • CaretX - позиция системной каретки (по горизонтали).
  • CaretY - позиция системной каретки (по вертикали).
  • KeyEcho - эхо клавиатуры (0 - ничего, 1 - символы,2 слова).
  • LastSpeak - последняя произнесённая фраза.
  • PunctuationLevel - чтение пунктуации (0 - ничего, 1 - некоторая, 2 - вся).
  • RectTop, RectBottom, RectLeft, RectRight - значения, возвращаемые функцией прямоугольника (см. ниже).
  • ScreenX - горизонтальное разрешение экрана (в пикселях).
  • ScreenY - вертикальное разрешение экрана (в пикселях).
  • ScriptObject - используется в каждом скрипте для доступа к объектной модели (для использования требует предварительного вызова функции ObjectInit).
  • ScriptObjectName - название объектного режима, если у приложения есть собственная объектная модель (например, MS Excel и MS Word).
  • ScriptX - возвращаемое значение от функций CursorPos и ReadingPos, определяющих позицию курсора на экране (по горизонтали).
  • ScriptY - возвращаемое значение от функций CursorPos и ReadingPos, определяющих позицию курсора на экране (по вертикали).
  • UseMusic - проигрываемый в настоящий момент файл звуковой схемы Thunder.

Основные встроенные функции

  • AddToQ(string) - добавляет строку команд string к Q (в рамках Thunder Q).
  • Caps - включает/выключает иллюстрацию заглавных букв.
  • ClipBoardText - возвращает текстовую информацию из буфера обмена.
  • CursorPos - возвращает позицию мышиного курсора на экране в форме переменных ScriptX и ScriptY.
  • DoInputBox(prompt, title) - выводит диалог для ввода данных пользователем с заголовком title и пояснительным текстом prompt.
  • GetForegroundRectangle - возвращает координаты приоритетного окна Windows.
  • GetObjectInfo(x, y) - возвращает информацию для объекта, содержащего точку (x; y) (в пикселях), при использовании MSAA.
  • GetPaneInfo(x, y) - возвращает информацию для объекта, содержащего точку (x; y) (в пикселях), при использовании стандартных функций.
  • GetWindowInfo(x, y) - возвращает информацию для "родительского" окна, содержащего точку (x; y) (в пикселях).
  • GetWindowTitle - возвращает строку с заголовком текущего окна.
  • LeftClick - эмулирует обычное нажатие левой кнопки мыши.
  • LeftDown - эмулирует нажатие левой кнопки мыши с последующим её удержанием.
  • LeftUp - эмулирует отпускание левой кнопки мыши после удержания.
  • LoadConfig(parameters) - загружает настройки эха клавиш, скорости речи и прочих параметров Thunder.
  • Load_Script(name) - Загружает скрипт с именем name.
  • MSAALeft - возвращает данные о левом крае прямоугольника MSAA.
  • MSAATop - возвращает данные о верхнем крае прямоугольника MSAA.
  • MoveReadingCursorAbsolute(x, y) - аналогично SetReadingCursorQuiet.
  • MoveReadingCursorRelative(x, y) - как SetReadingCursor, но перемещение осуществляется относительно текущего положения.
  • Mute - прекращает речь синтезатора.
  • Phonetic(string) - возвращает строку string, в которой все буквенные символы переписаны фонетически.
  • QSize - возвращает количество команд в составе Q (в рамках Thunder Q).
  • QClear - очищает последовательность команд Q (в рамках Thunder Q).
  • ReadingPos - возвращает позицию курсора чтения на экране в форме переменных ScriptX и ScriptY.
  • RepeatPhonetic - читает последнее произнесённое речевое сообщение фонетически.
  • RepeatSpell - читает последнюю произнесённую фразу по буквам.
  • RightClick - эмулирует простое нажатие правой кнопки мыши.
  • Say(string) - произносит строку string.
  • SayMore(string) - добавляет строку string к произносимому тексту, не заглушая его.
  • ScreenHeightSound(y) - проигрывает звук позиции экрана по вертикальной координате y (в пикселях).
  • ScreenPosSound(x) - проигрывает звук позиции экрана по горизонтальной координате x (в пикселях).
  • ScriptSendKeys(string) - посылает текущему приложению нажатия клавиш, определённые в строке string (в соответствии с форматом кодов VB SendKeys).
  • ScriptShell(address) - запускает программу по пути address.
  • SetCursorPosition(x, y) - устанавливает курсор редактирования на точку с координатами (x; y) (в пикселях) без перемещения курсора чтения.
  • SetReadingCursor(x, y) - устанавливает курсоры чтения и редактирования в точку с координатами (x; y) (в пикселях).
  • SetReadingCursorQuiet(x, y) - устанавливает курсор чтения в точку с координатами (x; y) (в пикселях) без перемещения курсора редактирования.
  • ShowCheck - выводит результаты проверки орфографии и грамматики в приложении MS Word.
  • Spell(string) - возвращает строку string, разделив все содержащиеся в ней символы пробелами.
  • TidyWindow - перемещает приоритетное окно в левую часть экрана и разворачивает его, если это возможно.
  • TimerDisable - останавливает таймер скрипта.
  • TimerEnabled - зтаймер скрипта; запускает процесс периодического выполнения случая (EventTimer) через равные интервалы (TimerInterval) до команды остановки (TimerDisable).
  • TimerInterval(i) - определяет интервал i (в миллисекундах), через который периодически выполняется директива таймера скрипта. Значение по умолчанию - 100.
  • VoiceOff - выключает речь Thunder.
  • VoiceOn - включает речь Thunder.

Основные события

  • EventFilterChar(s) - печатанье символа s (наглядный пример в calc.lsc).
  • EventFilterKey(scancode, shift) - нажатия клавиш пользователем (наглядный пример в calc.lsc).
  • EventHelp() - пользователь запрашивает помощи (CapsLock+Shift+F1).
  • EventHotKey(i) - нажатие пользователем одной из горячих комбинаций скрипта.
  • EventIdleTimer() - система находится в режиме ожидания реакции на флажки.
  • EventLoaded() - скрипт загружается.
  • EventNewWindow() - появляется новое приоритетное окно текущего приложения.
  • EventScriptString(string) - пользователь печатает строку скрипта, которая возвращается как string.
  • EventTimer() - запущен таймер скрипта.
  • EventUnload() - скрипт выгружается.

Ссылки для дополнительных изысканий

  1. Обзор некоммерческой программы экранного доступа Thunder
  2. Центр сценариев Microsoft
  3. DestroyWindow in VBScript
  4. VBScript [From Wikipedia, the free encyclopedia]
  5. VBScript [MSDN Library]


Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения.
Идея и реализация: © Владимир Довыденков и Анатолий Камынин,  2004-2019