|
РезюмеJaws обладает очень мощным языком скриптов, позволяющим Приспособить любое приложение windows для работы с программой экранного доступа. Хотя этот язык включает в себя целый ряд функций, обеспечивающих возможность легко отслеживать особенности интерфейса приложений и предоставлять речевой вывод, ему всё-же недостаёт целого ряда преимуществ, которыми обладают полноценные языки программирования, таких как возможность поддержки объектно-ориентированного программирования и возможности использования различных стандартных библиотек. К счастью, jaws обладает возможностью взаимодействия с com-объектами, что позволяет разработчикам расширять скрипты jaws с помощью компонентов из других языков программирования. В этом кратком руководстве я опишу, каким образом язык скриптов jaws может быть расширен при помощи очень простых com-объектов, созданных с использованием языка программирования python. Я предполагаю, что читатель уже обладает некоторым опытом по созданию скриптов для jaws, а так же по программированию на современных объектно-ориентированных языках, таких как python, c++, java и так далее.От читателя не требуется понимания того, как работают com-объекты, хотя некоторый предварительный опыт может пролить свет на целый ряд деталей, которые я здесь опускаю. ПредпосылкиДля создания com-объектов с помощью python, вам потребуется скачать и установить следующие библиотеки. Ниже приводятся прямые ссылки на загрузку твующих файлов. Кроме того, у вас должен быть установлен jaws версии 4.51 или выше и какой-нибудь текстовый редактор. У вас также должен быть установлен internet explorer версии 5.0 или выше, хотя это требование относится лишь к работе с данным руководством, а не к созданию расширений для jaws в целом. Задача: создание таймера для internet explorerВ данном руководстве мы создадим com-объект, с помощью которого пользователь получит возможность отслеживать, сколько времени он затратил на просмотр текущей web-страницы. При нажатии определённого сочетания клавиш, jaws сообщает, сколько времени прошло с момента загрузки пользователем данной страницы. Это далеко не самое полезное расширение для jaws, но его довольно просто написать и оно является хорошим учебным примером. Создание класса timer в pythonМы начнём с создания com-объекта в python, который назовём timer.
import datetime class JAWSTimer: # Это уникальный глобальный идентификатор для данного com-класса. _reg_clsid_ = '{6CB6257E-CCEF-4AA4-B82D-ACC5CC433F80}' # Это имя этого же класса, но уже предназначенное читающему код человеку. _reg_progid_ = 'UNC.Assist.Tutorial.JAWSTimer' # Это методы, которые вызываются из jaws _public_methods_ = ['StartTimer', 'ReportTime'] def __init__(self): # constructor; Данная функция вызывается при создании com-объекта self.timer = datetime.datetime.now() def StartTimer(self): # записать время старта для данного таймера self.timer = datetime.datetime.now() def ReportTime(self): # Высчитать разницу во времени td = datetime.datetime.now() - self.timer # Разница во времени выдаётся в секундах, днях и микросекундах # Высчитывается разница в секундах seconds = td.seconds + td.days*24*60*60 # Возвращаем jaws строку для проговаривания return 'Данная страница загружена в течение ' + str(seconds) + ' секунд.' if __name__ == '__main__': # Этот код будет выполнен, только если данный файл будет запущен прямо из python # Этот код регистрирует com объект в реестре windows import win32com.server.register win32com.server.register.UseCommandLine(JAWSTimer) Некоторые пояснения по порядку. Большинство пояснений к коду содержится во вложенных комментариях, то есть, в строках, начинающихся символом решётка, ещё известным как диез. Значение _reg_clsid_ является уникальным идентификатором, который я сгенерировал с помощью отдельной утилиты. Для данного проекта вы можете использовать этот идентификатор, но вы должны генерировать новый для каждого уникального com-класса, который вы создаёте. (Об этом мы поговорим чуть позже). Значение переменной _reg_progid_ будет использоваться в jaws для создания этого com-объекта. Вы можете определить для неё любое значение, не зарезервированное для другого com-класса. Метод __init__ является стандартным конструктором для создания классов в python, в то время как StartTimer и ReportTime - это два метода, которые мы будем вызывать из нашего jaws-скрипта. И, наконец, последняя секция, в самом конце, регистрирует данный класс на локальной машине для его последующего использования. Мы уже должны зарегистрировать данный com-класс на нашей локальной машине. Это можно сделать одним из следующих способов: Регистрация com-класса: метод 1
Регистрация com-класса: метод 2
После того, как вы зарегистрировали ваш com-класс, вы не можете переместить ваш файл JAWSTimer.py без необходимости заново его зарегистрировать. Модификация скрипта jaws для internet explorerОт составителя: Ниже приведена довольно-таки нестандартная (и нерекомендуемая разработчиками JAWS) процедура создания скрипта. Если вы используете Менеджер скриптов (Диспетчер скриптов), то документировать скрипт и назначить ему комбинацию клавиш можно в диалоге создания нового скрипта, что позволяет избежать некоторых ошибок. Теперь, после того, как мы зарегистрировали наш com-объект, мы можем использовать его в наших скриптах для jaws. Мы хотим узнать, сколько времени мы затрачиваем на просмотр страницы в internet explorer, поэтому нам понадобится отредактировать исходный файл jaws-скрипта для internet explorer. В jaws, версии 4.51, этот скрипт называется browseui.jss, а в jaws, версии 5.0, он называется Internet Explorer 5-6.jss. Для обеих версий эти скрипты находятся в поддиректории SETTINGS/enu той папки, в которую у вас установлен jaws.
globals object pyTimer If ! pyTimer Then Let pyTimer = CreateObject("UNC.Assist.Tutorial.JAWSTimer") EndIf pyTimer.StartTime() Script SpeakTime() SayString(pyTimer.ReportTime()) EndScript ../../scompile.exe your_script_name Модификация документации к скрипту jaws для internet explorerТеперь нам необходимо задокументировать наш новый скрипт, чтобы мы могли назначить для него сочетание клавиш. Для jaws, версии 4.51, файл документации для internet explorer называется browseui.jsd, а для версии 5.0 - Internet Explorer 5-6.jsd.
:Script SpeakTime :Synopsis Speak the time elapsed since the current page was loaded :Description Speak the time elapsed since the current page was loaded Настройка горячих клавиш jawsНаконец, мы можем повесить наш новый скрипт SpeakTime на какую-нибудь комбинацию клавиш jaws.
Проверка скриптаТеперь вы можете запустить internet explorer, чтобы протестировать наш com-объект и наш новый скрипт. Когда вы нажимаете Control-Shift-T, jaws должен сообщать нам, сколько времени прошло с момента открытия в браузере web-страницы. Следующий шагВот и всё на этом. Вы прочитали данное руководство и создали ваш первый com-объект для jaws. Теперь вы можете воспользоваться шагами, описанными в этом руководстве, для создания ваших собственных полезных расширений к jaws. Однако, создавая свои собственные com-объекты, вы должны кое-что иметь ввиду:
Полезные ссылкиЧтобы узнать больше о jaws, python и о разработках для людей с ограниченными возможностями, вы можете посетить следующие сайты:
|
|||||||||||
Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения. Идея и реализация: © Владимир Довыденков и Анатолий Камынин, 2004-2024 |
Социальные сети