|
Вероятно, для многих пользователей программы JAWS не является секретом тот факт, что существует целый класс приложений, с коими JAWS взаимодействует, используя технологию COM (а точнее, технологию OLE Automation). Примерами таких приложений являются Microsoft Internet Explorer™ , Microsoft Word™ и другие программы, входящие в пакет MS Office™ . Взаимодействуя с этими приложениями, JAWS не "читает" информацию с экрана, а обращается за ней напрямую к приложению. При этом приложение выступает в качестве COM-сервера, а JAWS -- в качестве COM-клиента. Используя специальный интерфейс, JAWS получает доступ к свойствам и методам COM-сервера и может управлять им. Благодаря такому механизму, работая с Microsoft Internet Explorer, пользователь JAWS может просмотреть списки всех ссылок, всех фреймов и всех заголовков на web-страничке. Кстати, рядовой пользователь Microsoft Internet Explorer, не имеющий программы JAWS, такие списки получить не может. Какая же польза от всего этого? Дело в том, что разработчики JAWS не только сами воспользовались COM-технологией, но и встроили поддержку COM-объектов в язык сценариев JAWS. Для этого они ввели специальный тип переменной --
Теперь попробуем извлечь из всего сказанного хоть какую-нибудь выгоду. Представим такую ситуацию, когда в обычном текстовом файле пользователю встречается сылка на web-страничку или адрес электронной почты. Если пользователь желает по этой ссылке перейти на страничку, то он должен загрузить, например, Microsoft Internet Explorer и скопировать ссылку в строку адреса. С отправкой письма возни будет ещё больше - надо загрузить почтовую программу, создать новое письмо и скопировать нужный адрес в поле "Кому". Очевидно, что всё это нуждается в некотором
упрощении. Здесь как раз и пригодятся способности JAWS работать с COM-объектами. Сделаем так, чтобы можно было выделить в тексте ссылку и сразу же перейти по ней на web-страничку. Если же это окажется почтовый адрес, то пусть загрузится диалог для создания нового письма, в котором уже будет стоять нужный адрес в поле "Кому". В случае, когда выделенный текст не является ни ссылкой, ни адресом электронной почты, должен загружаться диалог для создания нового письма, в тело которого уже помещён выделенный текст. Понадобится же для воплощения задуманного всего лишь один COM-объект: Дабы не перегружать статью отступлениями от основной темы, вновь отсылаем пользователя к руководству по программированию на языке сценариев JAWS, где подробно рассказано, что и в какой последовательности надо делать, чтобы создать новый скрипт. Напомним лишь, что простое копирование скрипта из этой статьи в файл Листинг скрипта (для JAWS 4.5): Script GoToURL() Var String str, Object o ;получаем выделенный текст Let str =GetSelectedText () ;инициализируем нужный COM-объект Let o = CreateObject ("InternetExplorer.Application") ;проверяем, начинается ли выделенный текст с http:// If StringContains (str, "http://")==1 Then Say("Загружается страничка по адресу: "+str, OT_MESSAGE) o.Navigate(str); Let o.Visible=true; ;проверяем, является ли выделенный текст почтовым адресом Elif StringContains (str, "@") Then Say("Почтовая ссылка: " + str,OT_MESSAGE) o.Navigate("MailTo: "+str); ;в противном случае - используем выделенный текст в качестве текста для письма Else Say("Создается черновик письма",OT_MESSAGE) o.Navigate("MailTo: ?body="+str); EndIf EndScript Для работы этого скрипта следует в тексте выделить нужную ссылку или почтовый адрес и нажать комбинацию клавиш, ассоциированную с этим скриптом. Небольшой комментарий для тех, кто уже сталкивался с программированием COM-объектов. Разумеется, можно было воспользоваться ещё одним COM-объектом для создания писем, иными словами, вызвать |
|||||||||
Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения. Идея и реализация: © Владимир Довыденков и Анатолий Камынин, 2004-2021 |
Социальные сети