|
|
Êðîìå èçâåñòíîé áèáëèîòåêè JfwAPI, ïîçâîëÿþùåé ïðèëîæåíèÿì ïðè ïîìîùè ñîîáùåíèé MS Windows íàïðÿìóþ âçàèìîäåéñòâîâàòü ñ ïðîãðàììîé ýêðàííîãî äîñòóïà JAWS , ñóùåñòâóåò äðóãîé âàðèàíò òàêîãî âçàèìîäåéñòâèÿ. Ýòîò âàðèàíò îñíîâàí íà ðåàëèçîâàííîì â JAWS êîìïîíåíòå OLE-Automation, èíòåðôåéñ êîòîðîãî, íàçâàííûé IJawsApi , ñîäåðæèò ìåòîäû, àíàëîãè÷íûå ïî ñâîåìó íàçíà÷åíèþ ôóíêöèÿì èç JfwAPI. Î÷åâèäíûì ïðåèìóùåñòâîì âçàèìîäåéñòâèÿ ÷åðåç èíòåðôåéñ IJawsApi ÿâëÿåòñÿ âîçìîæíîñòü èñïîëüçîâàòü åãî íå òîëüêî â ïðèëîæåíèÿõ, íî è ñöåíàðèÿõ íà òàêèõ ÿçûêàõ, êàê JScript, VBScript, AutoIt è òàê äàëåå, òî åñòü â òåõ ÿçûêàõ, ãäå ðåàëèçîâàíà ïîääåðæêà ìåõàíèçìîâ OLE-Automation.  îñòàëüíîì ìåòîäû IJawsApi ñòðàäàþò òåìè æå íåäîñòàòêàìè, ÷òî è ôóíêöèè JfwApi.  ïðè÷èíû ýòîãî ìû âäàâàòüñÿ íå áóäåì, à ñðàçó ïåðåéä¸ì ê èçó÷åíèþ ìåòîäîâ IJawsApi. Ìåòîäû IJawsApiÈíòåðôåéñ IJawsApi ïîääåðæèâàåò øåñòü ìåòîäîâ. Çà èñêëþ÷åíèåì ìåòîäà
ÈíèöèàëèçàöèÿÏðåæäå ÷åì èñïîëüçîâàòü èíòåðôåéñ IJawsApi íóæíî ñîçäàòü ñàì îáúåêò OLE-Automation.  ðàçëè÷íûõ ñêðèïòîâûõ ÿçûêàõ ýòî äåéñòâèå ìîæåò âûïîëíÿòüñÿ ðàçëè÷íûìè ñïîñîáàìè, íî áîëüøèíñòâî èç íèõ èìåþò ñõîæóþ ñåìàíòèêó. Êàê ïðàâèëî, â êà÷åñòâå àðãóìåíòà ïåðåäàåòñÿ íåçàâèñèìûé îò âåðñèè ñòðîêîâûé èäåíòèôèêàòîð îáúåêòà (VersionIndependentProgID), êîòîðûé â íàøåì ñëó÷àå âûãëÿäèò òàê: "FreedomSci.JawsApi". Êîíêðåòíûå ïðèìåðû áóäóò ðàññìîòðåíû äàëåå. Ïðèìåðû êà÷åñòâå ïðèìåðîâ íèæå ïðèâîäÿòñÿ ôðàãìåíòû êîäà íà JScript è AutoIt. Ðàäè ïðîñòîòû èçëîæåíèÿ, â êîäå îáðàáîòêà îøèáîê ñâåäåíà ê ìèíèìóìó. Ïðèìåð íà JScript
// Ôàéë: hello.js
// Ïðèìåð èñïîëüçîâàíèÿ IJawsApi.
// Èíèöèàëèçèðîâàòü îáúåêò è ïîëó÷èòü èíòåðôåéñ
var jawsApi = new ActiveXObject("FreedomSci.JawsApi");
// ïðîèçíåñòè ñòðîêó
jawsApi.SayString("Hello, world!");
// âûïîëíèòü ñêðèïò, îçâó÷èâàþùèé òåêóùåå âðåìÿ
jawsApi.RunScript("SaySystemTime");
// âûçâàòü ïîñëåäîâàòåëüíî íåñêîëüêî ôóíêöèé
jawsApi.RunFunction("TypeKey(\"Ctrl+Esc\")");
jawsApi.RunFunction("Delay(10)");
jawsApi.RunFunction("TypeKey(\"Esc\")");
Ïðèìåð íà AutoIt
; Ôàéë hello.au3
; Ïðèìåð èñïîëüçîâàíèÿ IJawsApi.
$oJawsApi= ObjCreate("FreedomSci.JawsApi")
if @error then
Msgbox(0,"JawsApi Test","Failed to create OLE-Object. Error code: " & hex(@error,8))
exit
endif
; ïðîèçíåñòè ñòðîêó
$oJawsApi.SayString("Hello, world!")
; âûïîëíèòü ñêðèïò, îçâó÷èâàþùèé òåêóùåå âðåìÿ
$oJawsApi.RunScript("SaySystemTime")
; âûçâàòü ïîñëåäîâàòåëüíî íåñêîëüêî ôóíêöèé
$oJawsApi.RunFunction('TypeKey("Ctrl+Esc")')
$oJawsApi.RunFunction("Delay(10)")
$oJawsApi.RunFunction('TypeKey("Esc")')
exit
Ïðèìåð äëÿ C#Äëÿ C# íèæå ïðèâåäåíû ôðàãìåíòû êîäà ñ èíèöèàëèçàöèåé îáúåêòà JfW API, à òàêæå âûçîâ îäíîãî èç ìåòîäîâ. Îñòàëüíûå ìåòîäû API ìîæíî âûçûâàòü àíàëîãè÷íûì îáðàçîì
// Ðàáî÷èé ôðàãìåíò äëÿ .Net 3.5:
Type jfwApi = Type.GetTypeFromProgID("FreedomSci.JawsApi");
object o = Activator.CreateInstance( jfwApi);
jfwApi.InvokeMember("SayString",
System.Reflection.BindingFlags.InvokeMethod,
null,
o,
new Object[1] {"Hello"});
...
// Â .net 4.0 äîëæåí ðàáîòàòü ïðèìåð äëÿ .Net 3.5,
// íî òàêæå âïîëíå ïðèãîäåí ñëåäóþùèé âàðèàíò :
Type jfwApi = Type.GetTypeFromProgID("FreedomSci.JawsApi");
dynamic o= Activator.CreateInstance( jfwApi);
o.SayString("hello");
...
Èñïîëüçîâàíèå IJawsApi â ïðîãðàììàõ íà C++Äëÿ èñïîëüçîâàíèÿ èíòåðôåéñà IJawsApi â ïðîãðàììå íà C++ íåîáõîäèìî ñîçäàòü çàãîëîâî÷íûé ôàéë ñ îáúÿâëåíèåì ñîîòâåòñòâóþùåãî êëàññà è ôàéë ñ îïðåäåëåíèåì GUID äëÿ îáúåêòà è IID äëÿ èíòåðôåéñà. Åñëè èñïîëüçóåìûé êîìïèëÿòîð ïîääåðæèâàåò äèðåêòèâó #import, òî ýòó çàäà÷ó ìîæíî âîçëîæèòü íà íåå, óêàçàâ â êà÷åñòâå èìïîðòèðóåìîãî ôàéë Fsapi.dll. Ïîëíûé ïóòü ê ýòîìó ôàéëó ìîæíî óçíàòü èç ñèñòåìíîãî ðååñòðà, îòûñêàâ âåòêó:
HKEY_CLASSES_ROOT\CLSID\{CCE5B1E5-B2ED-45D5-B09F-8EC54B75ABF4}\
È Èñêîìîå çíà÷åíèå áóäåò íàõîäèòüñÿ â ïîäðàçäåëå InprocServer32. Åñëè êîìïèëÿòîð íå ïîääåðæèâàåò äèðåêòèâó #import, òî íåîáõîäèìûå ôàéëû ïðèäåòñÿ ñîçäàâàòü âðó÷íóþ. Íèæå ïðèâåäåíû èñõîäíûå òåêñòû ôàéëîâ jawsapi.h è guids.cpp, íàïèñàííûå, òàê ñêàçàòü, â äóõå "÷èñòîãî COM". // Ôàéë: jawsapi.h // Îáúÿâëåíèå èíòåðôåéñà IJawsApi. #ifndef __JAWSAPI_H__ #define __JAWSAPI_H__ #include // Ôàéë: guids.cpp. #include Ôàéë guids.cpp äîëæåí áûòü âêëþ÷¸í â ïðîåêò (åñëè èñïîëüçóåòñÿ èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè) èëè óêàçàí â êîìàíäíîé ñòðîêå êîìïèëÿòîðà íåïîñðåäñòâåííî. Ôàéë jawsapi.h ïîäêëþ÷àåòñÿ ïðè ïîìîùè äèðåêòèâû #include â òåõ ôàéëàõ ñ èñõîäíûì êîäîì, ãäå ïðåäïîëàãàåòñÿ èñïîëüçîâàòü èíòåðôåéñ IJawsApi. Òàêæå â ýòèõ ôàéëàõ íåîáõîäèìî îáúÿâèòü äâå âíåøíèå ïåðåìåííûå: extern const CLSID CLSID_JAWSCLASS ; extern const IID IID_IJAWSAPI ; Ïðèìåð èñïîëüçîâàíèÿ IJawsApi â ïðîãðàììå íà ÿçûêå C++ ïðèâåä¸í íèæå. Ýòî êîíñîëüíîå ïðèëîæåíèå, åäèíñòâåííûì äåéñòâèåì êîòîðîãî áóäåò îçâó÷èâàíèå òåêóùåãî âðåìåíè ïðè ïîìîùè ñêðèïòà JAWS. // Ôàéë: main.cpp #includeÏðèâåä¸ííûé ïðèìåð ìîæíî ñêîìïèëèðîâàòü êîìïèëÿòîðîì èç íàáîðà Borland Builder C++ 5.5 command line tools èëè C++-êîìïèëÿòîðîì èç ïàêåòà MinGW (â ïîñëåäíåì ñëó÷àå â îïöèÿõ êîìàíäíîé ñòðîêè êîìïèëÿòîðà íåîáõîäèìî äîáàâèòü: -lole32 -loleaut32). |
|||||||||
|
Ðàñïðîñòðàíåíèå ìàòåðèàëîâ ñàéòà îçíà÷àåò, ÷òî ðàñïðîñòðàíèòåëü ïðèíÿë óñëîâèÿ ëèöåíçèîííîãî ñîãëàøåíèÿ. Èäåÿ è ðåàëèçàöèÿ: © Âëàäèìèð Äîâûäåíêîâ è Àíàòîëèé Êàìûíèí, 2004-2026 | ||||||||||
Ñîöèàëüíûå ñåòè