Разделы
Социальные сети
|
Введение в разработку скриптов для Thunder |
Содержание
- Введение
- Кратко о VBScript
- Главное о скриптах Thunder
- Основные зарезервированные переменные
- Основные встроенные функции
- Основные события
- Ссылки для дополнительных изысканий
ВведениеНа сегодняшний день среди некоммерческих программ экранного доступа под операционные системы семейства 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() - скрипт выгружается.
Ссылки для дополнительных изысканий
- Обзор некоммерческой программы экранного доступа Thunder
- Центр сценариев Microsoft
- DestroyWindow in VBScript
- VBScript [From Wikipedia, the free encyclopedia]
- VBScript [MSDN Library]
|
|
Социальные сети