ÌÀËÅÍÜÊÈÉ, ÍÎ Î×ÅÍÜ ÏÎËÅÇÍÛÉ ÑÊÐÈÏÒ

(JAWS è òåõíîëîãèè Com/Automation)
Äàòà ïóáëèêàöèè:2004
Ïîäåëèòüñÿ â Twitter Ïîäåëèòüñÿ â F******k Ïîäåëèòüñÿ â VKontakte Ïîäåëèòüñÿ â Telegram Ïîäåëèòüñÿ â Mastodon

Âåðîÿòíî, äëÿ ìíîãèõ ïîëüçîâàòåëåé ïðîãðàììû 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-2026