ћјЋ≈Ќ№ »…, Ќќ ќ„≈Ќ№ ѕќЋ≈«Ќџ… — –»ѕ“

(JAWS и технологии Com/Automation)
ƒата публикации:2004
Twitter Facebook Vkontakte

¬еро€тно, дл€ многих пользователей программы 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. ƒл€ этого они ввели специальный тип переменной -- Object и функцию инициализации COM-сервера -- CreateObject. ѕодробно работа сCOM-объектами в €зыке сценариев JAWS изложена в руководстве по программированию на этом €зыке. «десь же кратко напомним основные правила:

  1. им€ переменной, указывающей на COM-объект, отдел€етс€ от свойства или метода этого объекта символом точки (.), причем никаких пробелов ни до, ни после символа точки быть не должно.). Ќапример, в следующем листинге показано, как, присвоив свойству Visible значение true, можно сделать видимым объект Internet Explorer:
    Var
    Object ie
    Let ie = CreateObject("InternetExplorer.Application")
    Let Ie.Visible = true;
    
  2. все строки, в которых есть обращение к свойствам или методам COM-объекта, должны заканчиватьс€ точкой с зап€той (;), причем никаких пробелов перед точкой с зап€той быть не должно (см. листинг выше);
  3. в названи€х свойств и методов COM-объектов важен регистр букв, то есть нельз€, как это допускаетс€ в €зыке сценариев JAWS, замен€ть строчные буквы прописными и наоборот.

“еперь попробуем извлечь из всего сказанного хоть какую-нибудь выгоду. ѕредставим такую ситуацию, когда в обычном текстовом файле пользователю встречаетс€ сылка на web-страничку или адрес электронной почты. ≈сли пользователь желает по этой ссылке перейти на страничку, то он должен загрузить, например, Microsoft Internet Explorer и скопировать ссылку в строку адреса. — отправкой письма возни будет ещЄ больше - надо загрузить почтовую программу, создать новое письмо и скопировать нужный адрес в поле " ому". ќчевидно, что всЄ это нуждаетс€ в некотором упрощении. «десь как раз и пригод€тс€ способности JAWS работать с COM-объектами. —делаем так, чтобы можно было выделить в тексте ссылку и сразу же перейти по ней на web-страничку. ≈сли же это окажетс€ почтовый адрес, то пусть загрузитс€ диалог дл€ создани€ нового письма, в котором уже будет сто€ть нужный адрес в поле " ому". ¬ случае, когда выделенный текст не €вл€етс€ ни ссылкой, ни адресом электронной почты, должен загружатьс€ диалог дл€ создани€ нового письма, в тело которого уже помещЄн выделенный текст. ѕонадобитс€ же дл€ воплощени€ задуманного всего лишь один COM-объект: InternetExplorer.Application. Ётот объект существует в среде MS Windows в том случае, если установлен Microsoft Internet Explorer.

ƒабы не перегружать статью отступлени€ми от основной темы, вновь отсылаем пользовател€ к руководству по программированию на €зыке сценариев JAWS, где подробно рассказано, что и в какой последовательности надо делать, чтобы создать новый скрипт. Ќапомним лишь, что простое копирование скрипта из этой статьи в файл default.jss (а именно в него следует поместить скрипт) положительных результатов не даст.  роме того, не забудьте ассоциировать со скриптом клавиатурную комбинацию.

Ћистинг скрипта (дл€ 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-объектом дл€ создани€ писем, иными словами, вызвать Outlook.Application. ќднако, во-первых, пользователь может работать с другой почтовой программой, а во -вторых, название этого COM-объекта зависит от его версии, поэтому возможны неудачи при его инициализации. »з€щна€ подстановка почтовой ссылки (MailTo:) в качестве адреса дл€ Microsoft Internet Explorer позвол€ет обойти все эти преп€тстви€.



–аспространение материалов сайта означает, что распространитель прин€л услови€ лицензионного соглашени€.
»де€ и реализаци€: © ¬ладимир ƒовыденков и јнатолий  амынин,  2004-2021