Îíëàéí áèáëèîòåêà PLAM.RU


  • Âîçìîæíîñòè òåõíîëîãèè ActiveX
  • Íóìåðàöèÿ âåðñèé WSH
  • Íàçíà÷åíèå è îñíîâíûå ñâîéñòâà WSH
  • Ñîçäàíèå è çàïóñê ïðîñòåéøèõ ñöåíàðèåâ JScript è VBScript
  • Çàïóñê ñöåíàðèÿ èç êîìàíäíîé ñòðîêè â êîíñîëüíîì ðåæèìå
  • Çàïóñê ñöåíàðèÿ èç êîìàíäíîé ñòðîêè â ãðàôè÷åñêîì ðåæèìå
  • Çàïóñê ñöåíàðèÿ ñ ïîìîùüþ ìåíþ Ïóñê
  • Çàïóñê ñöåíàðèÿ ñ ïîìîùüþ Ïðîâîäíèêà Windows (Windows Explorer)
  • Óñòàíîâêà è èçìåíåíèå ñâîéñòâ ñöåíàðèåâ
  • Ñâîéñòâà è ïàðàìåòðû ñöåíàðèåâ, âûïîëíÿåìûõ ñ ïîìîùüþ cscript.exe
  • Ñâîéñòâà è ïàðàìåòðû ñöåíàðèåâ, âûïîëíÿåìûõ ñ ïîìîùüþ wscript.exe
  • Ñòàíäàðòíûå îáúåêòû WSH5.6
  • Îáúåêò WScript
  • Ñâîéñòâî Arguments
  • Ñâîéñòâà StdErr, StdIn, StdOut
  • Ìåòîä CreateObject
  • Ìåòîä ConnectObject
  • Ìåòîä DisconnectObject
  • Ìåòîä Echo
  • Ìåòîä Sleep
  • Îáúåêòû-êîëëåêöèè
  • Îáúåêò WshArguments
  • Îáúåêò WshNamed
  • Îáúåêò WshUnnamed
  • Îáúåêò WshEnvironment
  • Îáúåêò WshSpecialFolders
  • Ðàáîòà ñ ñåòüþ è îáîëî÷êîé Windows
  • Îáúåêò WshNetwork
  • Ìåòîä AddPrinterConnection
  • Ìåòîä AddWindowsPrinterConnection
  • Ìåòîä EnumNetworkDrives
  • Ìåòîä EnumPrinterConnections
  • Ìåòîä MapNetworkDrive
  • Ìåòîä RemoveNetworkDrive
  • Ìåòîä RemovePrinterConnection
  • Ìåòîä SetDefaultPrinter
  • Îáúåêò WshShell
  • Ìåòîä ÀððActivate
  • Ìåòîä CreateShortcut
  • Ìåòîä Environment
  • Ìåòîä ExpandEnvironmentString
  • Ìåòîä LogEvent
  • Ìåòîä Popup
  • Ìåòîä RegDelete
  • Ìåòîä RegRead
  • Ìåòîä RegWrite
  • Ìåòîä Run
  • Ìåòîä SendKeys
  • Ðàáîòà ñ ÿðëûêàìè
  • Îáúåêò WshShortcut
  • Ñâîéñòâî Arguments
  • Ñâîéñòâî HotKey
  • Ñâîéñòâî IconLocation
  • Ñâîéñòâî WindowStyle
  • Ñâîéñòâî WorkingDirectory
  • Îáúåêò WshUrlShortcut
  • Çàïóñê ïðîöåññîâ íà ëîêàëüíîé è óäàëåííîé ìàøèíå
  • Îáúåêò WshScriptExec
  • Ñâîéñòâî ProcessID
  • Ñâîéñòâî Status
  • Ñâîéñòâà StdOut, StdIn è StdErr
  • Îáúåêò WshController
  • Îáúåêò WshRemote
  • Îáúåêò WshRemoteError
  • Ãëàâà 1

    Ïåðâîå çíàêîìñòâî ñ Windows Script Host

     ðàííèõ âåðñèÿõ Windows ñòàíäàðòíûì ñðåäñòâîì äëÿ àâòîìàòèçàöèè îäíîòèïíûõ ïîâòîðÿþùèõñÿ çàäà÷ ñëóæèëè êîìàíäíûå (ïàêåòíûå) ôàéëû è óòèëèòû ïàêåòà Resource Kit äëÿ ñîîòâåòñòâóþùåé âåðñèè. Îäíàêî äàæå ñ ïîìîùüþ èìåþùåãîñÿ â Windows NT/2000/XP óñîâåðøåíñòâîâàííîãî êîìàíäíîãî èíòåðïðåòàòîðà cmd.exe òðóäíî íàïèñàòü êàêóþ-ëèáî ñëîæíóþ ïðîãðàììó-ñöåíàðèé (script): îòñóòñòâóåò ïîëíîöåííàÿ èíòåðàêòèâíîñòü, íåëüçÿ íàïðÿìóþ ðàáîòàòü ñ ðàáî÷èì ñòîëîì Windows è ñèñòåìíûì ðååñòðîì è ò.ä.

    Äëÿ èñïðàâëåíèÿ ýòîé ñèòóàöèè êîìïàíèåé Microsoft áûë ðàçðàáîòàí ñåðâåð ñöåíàðèåâ WSH — Windows Script Host, ñ ïîìîùüþ êîòîðîãî ìîæíî âûïîëíÿòü ñöåíàðèè, íàïèñàííûå, â ïðèíöèïå, íà ëþáîì ÿçûêå (ïðè óñëîâèè, ÷òî äëÿ ýòîãî ÿçûêà óñòàíîâëåí ñîîòâåòñòâóþùèé ìîäóëü (scripting engine), ïîääåðæèâàþùèé òåõíîëîãèþ ActiveX Scripting).  êà÷åñòâå ñòàíäàðòíûõ ÿçûêîâ ïîääåðæèâàþòñÿ Visual Basic Script Edition (VBScript) è JScript.

    Âîîáùå ãîâîðÿ, ïðèíöèï ðàáîòû ñöåíàðèåâ, ïîääåðæèâàåìûõ WSH, ñîñòîèò â èñïîëüçîâàíèè îáúåêòîâ ActiveX, ïîýòîìó âíà÷àëå ìû î÷åíü êðàòêî îïèøåì âîçìîæíîñòè ñàìîé òåõíîëîãèè ActiveX êîìïàíèè Microsoft.

    Âîçìîæíîñòè òåõíîëîãèè ActiveX

    Íàïîìíèì, ÷òî â Windows ñ ñàìîãî íà÷àëà äëÿ îáåñïå÷åíèÿ îáìåíà äàííûìè ìåæäó ïðèëîæåíèÿìè áûëà ðàçðàáîòàíà òåõíîëîãèÿ ñâÿçûâàíèÿ è âíåäðåíèÿ îáúåêòîâ (OLE, Object Linking and Embedding). Âíà÷àëå òåõíîëîãèÿ OLE èñïîëüçîâàëàñü äëÿ ñîçäàíèÿ ñîñòàâíûõ äîêóìåíòîâ, à çàòåì äëÿ ðåøåíèÿ áîëåå îáùåé çàäà÷è — ïðåäîñòàâëåíèÿ ïðèëîæåíèÿìè äðóã äðóãó ñîáñòâåííûõ ôóíêöèé (ñëóæá) è ïðàâèëüíîãî èñïîëüçîâàíèÿ ýòèõ ôóíêöèé. Òåõíîëîãèÿ, ïîçâîëÿþùàÿ îäíîìó ïðèëîæåíèþ (êëèåíòó àâòîìàòèçàöèè), âûçûâàòü ôóíêöèè äðóãîãî ïðèëîæåíèÿ (ñåðâåðà àâòîìàòèçàöèè), áûëà íàçâàíà OLE Automation.  îñíîâå OLE è OLE Automation ëåæèò ðàçðàáîòàííàÿ Microsoft áàçîâàÿ "êîìïîíåíòíàÿ" òåõíîëîãèÿ COM (Component Object Model). 

     îáùèõ ñëîâàõ, êîìïîíåíòíîå ïðîãðàììíîå îáåñïå÷åíèå — ýòî ñïîñîá ðàçðàáîòêè ïðîãðàìì, ïðè êîòîðîì èñïîëüçóþòñÿ òåõíîëîãèè ñîçäàíèÿ ïðîãðàììíûõ ìîäóëåé, ïîäîáíûå òåõíîëîãèÿì, ïðèìåíÿåìûì äëÿ ðàçðàáîòêè àïïàðàòíûõ ñðåäñòâ. Ñëîæíûå ýëåìåíòíûå ñõåìû ñîáèðàþòñÿ èç ñòàíäàðòèçèðîâàííûõ ìèêðîñõåì, êîòîðûå èìåþò ÷åòêî îïðåäåëåííûå äîêóìåíòèðîâàííûå ôóíêöèè. Ðàçðàáîò÷èê ìîæåò ýôôåêòèâíî ïîëüçîâàòüñÿ òàêèìè ìèêðîñõåìàìè, íå çàäóìûâàÿñü îá èõ âíóòðåííåé ñòðóêòóðå.  ïðîãðàììíûõ êîìïîíåíòàõ, íàïèñàííûõ íà êàêîì-ëèáî ÿçûêå ïðîãðàììèðîâàíèÿ, äåòàëè ðåàëèçàöèè èñïîëüçóåìûõ àëãîðèòìîâ òàêæå ñêðûòû âíóòðè êîìïîíåíòà (îáúåêòà), à íà ïîâåðõíîñòè íàõîäÿòñÿ îáùåäîñòóïíûå èíòåðôåéñû, êîòîðûìè ìîãóò ïîëüçîâàòüñÿ è äðóãèå ïðèëîæåíèÿ, íàïèñàííûå íà òîì æå èëè äðóãîì ÿçûêå.

     íàñòîÿùåå âðåìÿ, ïî çàÿâëåíèþ Microsoft, òåðìèí OLE èñïîëüçóåòñÿ òîëüêî ïî èñòîðè÷åñêèì ïðè÷èíàì. Âìåñòî íåãî Microsoft ñ 1996 ãîäà ïðèìåíÿåò íîâûé òåðìèí — ActiveX, ïåðâîíà÷àëüíî îáîçíà÷àâøèé WWW (World Wide Web) êîìïîíåíòû (îáúåêòû), ñîçäàííûå íà áàçå òåõíîëîãèè ÑÎÌ.

    Òåõíîëîãèÿ ActiveX äî ïîñëåäíåãî âðåìåíè ÿâëÿëàñü êëþ÷åâîé â ïðîäóêòàõ Microsoft. Íàèáîëåå ïîëíîå âîïëîùåíèå îíà íàøëà â ïðîãðàììàõ Microsoft Office, Internet Explorer, IIS (Internet Information Service).  ýòè ïðîäóêòû äëÿ óïðàâëåíèÿ ñîîòâåòñòâóþùèìè îáúåêòàìè àâòîìàòèçàöèè áûëè âñòðîåíû èíòåðïðåòàòîðû ñïåöèàëüíûõ ÿçûêîâ ñöåíàðèåâ: VBScript (èñïîëüçóåòñÿ â Microsoft Office, Internet Explorer, IIS) è JScript (èñïîëüçóåòñÿ â Internet Explorer, IIS). Îäíàêî íåïîñðåäñòâåííî â îïåðàöèîííîé ñèñòåìå, âíå ýòèõ ïðîäóêòîâ, âûïîëíÿòü ñöåíàðèè, íàïèñàííûå íà VBScript èëè JScript, áûëî íåëüçÿ.

    Ñåðâåð ñöåíàðèåâ WSH ÿâëÿåòñÿ ìîùíûì èíñòðóìåíòîì, ïðåäîñòàâëÿþùèì åäèíûé èíòåðôåéñ (îáúåêòíóþ ìîäåëü) äëÿ ñïåöèàëèçèðîâàííûõ ÿçûêîâ (VBScript, JScript, PerlScript, REXX, TCL, Python è ò.ï.), êîòîðûå, â ñâîþ î÷åðåäü, ïîçâîëÿþò èñïîëüçîâàòü ëþáûå âíåøíèå îáúåêòû ActiveX. Ñ ïîìîùüþ WSH ñöåíàðèè ìîãóò áûòü âûïîëíåíû íåïîñðåäñòâåííî â îïåðàöèîííîé ñèñòåìå Windows, áåç âñòðàèâàíèÿ â HTML-ñòðàíèöû.

    Íóìåðàöèÿ âåðñèé WSH

    Ñêàæåì íåñêîëüêî ñëîâ îòíîñèòåëüíî íóìåðàöèè âåðñèé WSH. Ñàìàÿ ïåðâàÿ âåðñèÿ WSH, âõîäèâøàÿ â êà÷åñòâå ñòàíäàðòíîãî êîìïîíåíòà â Windows 98, èìåëà íîìåð 1.0. Ñ äðóãîé ñòîðîíû, ýòà âåðñèÿ îïèðàëàñü íà ÿçûêè ñöåíàðèåâ JScript è VBScript âåðñèè 5.0, êîòîðûå ïîääåðæèâàëèñü Internet Explorer 5.0, ïîýòîìó ìîæíî ê ñàìîé ïåðâîé âåðñèè WSH îòíîñèòüñÿ è êàê ê WSH 5.0. Ñëåäóþùåé âåðñèè WSH, âõîäèâøåé â ïîñòàâêó Windows 2000, áûë ïðèñâîåí íîìåð 2.0; â ýòîé âåðñèè èñïîëüçîâàëèñü ÿçûêè JScript è VBScript âåðñèè 5.1. Íàêîíåö, íîìåð ïîñëåäíåé âåðñèè WSH, ÿâëÿþùåéñÿ íåîòúåìëåìîé ÷àñòüþ Windows ÕÐ, êîìïàíèÿ Microsoft ðåøèëà âñå æå ïðèâÿçàòü ê íîìåðó âåðñèè ÿçûêîâ JScript è VBScript — òàêèì îáðàçîì ïîÿâèëñÿ ñåðâåð ñöåíàðèåâ WSH 5.6.

    Îòìåòèì òàêæå, ÷òî äàæå ñàìà àááðåâèàòóðà "WSH" ñíà÷àëà ðàñøèôðîâûâàëàñü Microsoft êàê "Windows Scripting Host", à çàòåì áûëî ïðèíÿòî íàçâàíèå "Windows Script Host".

    Çàìå÷àíèå

    Íåñìîòðÿ íà òî, ÷òî WSH 5.6 ÿâëÿåòñÿ ñòàíäàðòíîé ÷àñòüþ Windows ÕÐ, ýòó âåðñèþ ìîæíî òàêæå óñòàíîâèòü è èñïîëüçîâàòü âî âñåõ ïðåäûäóùèõ 32-ðàçðÿäíûõ âåðñèÿõ Windows 95/98/ME/NT/2000. Äëÿ ýòîãî íåîáõîäèìî ñêà÷àòü èíñòàëëÿöèîííûé ôàéë äëÿ WSH 5.6 ñ ñåðâåðà Microsoft (http://msdn.microsoft.com/scripting); òàì æå ìîæíî íàéòè è äîêóìåíòàöèþ ïî WSH 5.6.

    Íàçíà÷åíèå è îñíîâíûå ñâîéñòâà WSH

    WSH ïðåäúÿâëÿåò ìèíèìàëüíûå òðåáîâàíèÿ ê îáúåìó îïåðàòèâíîé ïàìÿòè è ÿâëÿåòñÿ î÷åíü óäîáíûì èíñòðóìåíòîì äëÿ àâòîìàòèçàöèè ïîâñåäíåâíûõ çàäà÷ ïîëüçîâàòåëåé è àäìèíèñòðàòîðîâ îïåðàöèîííîé ñèñòåìû Windows. Èñïîëüçóÿ ñöåíàðèè WSH, ìîæíî íåïîñðåäñòâåííî ðàáîòàòü ñ ôàéëîâîé ñèñòåìîé êîìïüþòåðà, à òàêæå óïðàâëÿòü ðàáîòîé äðóãèõ ïðèëîæåíèé (ñåðâåðîâ àâòîìàòèçàöèè). Ïðè ýòîì âîçìîæíîñòè ñöåíàðèåâ îãðàíè÷åíû òîëüêî ñðåäñòâàìè, êîòîðûå ïðåäîñòàâëÿþò äîñòóïíûå ñåðâåðû àâòîìàòèçàöèè.

    Ïåðå÷èñëèì òîëüêî íàèáîëåå î÷åâèäíûå çàäà÷è, äëÿ àâòîìàòèçàöèè êîòîðûõ ïðåêðàñíî ïîäõîäÿò ñöåíàðèè WSH.

    ? Îðãàíèçàöèÿ ðåçåðâíîãî êîïèðîâàíèÿ íà ñåòåâîé ñåðâåð ôàéëîâ ñ ëîêàëüíîé ìàøèíû, êîòîðûå îòáèðàþòñÿ ïî êàêîìó-ëèáî êðèòåðèþ.

    ? Áûñòðîå èçìåíåíèå êîíôèãóðàöèè ðàáî÷åãî ñòîëà Windows â çàâèñèìîñòè îò çàäà÷, âûïîëíÿåìûõ ïîëüçîâàòåëåì.

    ? Àâòîìàòè÷åñêèé çàïóñê ïðîãðàìì Microsoft Office, ñîçäàíèå òàì ñëîæíûõ ñîñòàâíûõ äîêóìåíòîâ, ðàñïå÷àòêà ýòèõ äîêóìåíòîâ è çàêðûòèå ïðèëîæåíèé.

    ? Óïðàâëåíèå ðàáîòîé ïðèëîæåíèé, íå ÿâëÿþùèõñÿ ñåðâåðàìè àâòîìàòèçàöèè, ñ ïîìîùüþ ïîñûëêè â ýòè ïðèëîæåíèÿ íàæàòèé êëàâèø.

    ? Ïîäêëþ÷åíèå è îòêëþ÷åíèå ñåòåâûõ ðåñóðñîâ (äèñêîâ è ïðèíòåðîâ).

    ? Ñîçäàíèå ñëîæíûõ ñöåíàðèåâ ðåãèñòðàöèè äëÿ ïîëüçîâàòåëåé.

    ? Âûïîëíåíèå çàäà÷ àäìèíèñòðèðîâàíèÿ ëîêàëüíîé ñåòè (íàïðèìåð, äîáàâëåíèå èëè óäàëåíèå ïîëüçîâàòåëåé).

    Ñîçäàíèå è çàïóñê ïðîñòåéøèõ ñöåíàðèåâ JScript è VBScript

    Ïðîñòåéøèé WSH-ñöåíàðèé, íàïèñàííûé íà ÿçûêå JScript èëè VBScript, — ýòî îáû÷íûé òåêñòîâûé ôàéë ñ ðàñøèðåíèåì js èëè vbs ñîîòâåòñòâåííî, ñîçäàòü åãî ìîæíî â ëþáîì òåêñòîâîì ðåäàêòîðå, ñïîñîáíîì ñîõðàíÿòü äîêóìåíòû â ôîðìàòå "Òîëüêî òåêñò".

    Çàìå÷àíèå

    Ñïåöèàëüíûå ìîùíûå ïðîãðàììû, ïîçâîëÿþùèå ñîçäàâàòü è îòëàæèâàòü ñöåíàðèè, îïèñàíû â ïðèëîæåíèè 3.

    Ðàçìåð ñöåíàðèÿ ìîæåò èçìåíÿòüñÿ îò îäíîé äî òûñÿ÷ ñòðîê, ïðåäåëüíûé ðàçìåð îãðàíè÷èâàåòñÿ ëèøü ìàêñèìàëüíûì ðàçìåðîì ôàéëà â ñîîòâåòñòâóþùåé ôàéëîâîé ñèñòåìå.

     êà÷åñòâå ïåðâîãî ïðèìåðà ñîçäàäèì JScript-ñöåíàðèé, âûâîäÿùèé íà ýêðàí äèàëîãîâîå îêíî ñ íàäïèñüþ "Ïðèâåò!" (ðèñ. 1.1). 

    Ðèñ. 1.1. Ïðîñòîå äèàëîãîâîå îêíî


    Äëÿ âûâîäà òàêîãî îêíà äîñòàòî÷íî ñ ïîìîùüþ, íàïðèìåð, ñòàíäàðòíîãî Áëîêíîòà Windows (notepad.exe) ñîçäàòü ôàéë First.js, ñîäåðæàùèé âñåãî îäíó ñòðîêó:

    WScript.Echo("Ïðèâåò!");

    Òîò æå ñàìûé ñöåíàðèé íà ÿçûêå VBScript, åñòåñòâåííî, îòëè÷àåòñÿ ñèíòàêñèñîì è âûãëÿäèò ñëåäóþùèì îáðàçîì:

    WScript.Echo "Ïðèâåò!"

    Íåñìîòðÿ íà òî, ÷òî äëÿ ðàáîòû íàøèõ ñöåíàðèåâ äîñòàòî÷íî âñåãî îäíîé ñòðîêè, æåëàòåëüíî ñðàçó ïðèó÷èòü ñåáÿ ê äîáàâëåíèþ â íà÷àëî ôàéëà èíôîðìàöèè î íàõîäÿùåìñÿ â íåì ñöåíàðèè: èìÿ ôàéëà, èñïîëüçóåìûé ÿçûê, êðàòêîå îïèñàíèå âûïîëíÿåìûõ äåéñòâèé. Íà ÿçûêå JScript òàêàÿ èíôîðìàöèÿ, îôîðìëåííàÿ â âèöå êîììåíòàðèåâ, ìîæåò âûãëÿäåòü ñëåäóþùèì îáðàçîì:

    /*******************************************************************/

    /* Èìÿ: First.js                                                   */

    /* ßçûê: JScript                                                   */

    /* Îïèñàíèå: ÂÛÂÎÄ íà ýêðàí ïðèâåòñòâèÿ                            */

    /*******************************************************************/

    Ðèñ. 1.2. Ñöåíàðèé First.js


    Íà ÿçûêå VBScript òî æå ñàìîå âûãëÿäèò ñëåäóþùèì îáðàçîì:

    '*******************************************************************

    ' Èìÿ: First.vbs

    ' ßçûê: VBScript

    ' Îïèñàíèå: Âûâîä íà ýêðàí ïðèâåòñòâèÿ

    '*******************************************************************

    Äëÿ çàïóñêà ñöåíàðèåâ WSH ñóùåñòâóåò íåñêîëüêî ñïîñîáîâ.

    Çàïóñê ñöåíàðèÿ èç êîìàíäíîé ñòðîêè â êîíñîëüíîì ðåæèìå

    Ìîæíî âûïîëíèòü ñöåíàðèé èç êîìàíäíîé ñòðîêè ñ ïîìîùüþ êîíñîëüíîé âåðñèè WSH cscript.exe. Íàïðèìåð, ÷òîáû çàïóñòèòü ñöåíàðèé, çàïèñàííûé â ôàéëå C:\Script\First.js, íóæíî çàãðóçèòü êîìàíäíîå îêíî è âûïîëíèòü â íåì êîìàíäó

    cscript Ñ:\Script\First.js

    Â ðåçóëüòàòå âûïîëíåíèÿ ýòîãî ñöåíàðèÿ â êîìàíäíîå îêíî âûâåäåòñÿ ñòðîêà "Ïðèâåò!" (ðèñ. 1.3). 

    Ðèñ. 1.3. Ðåçóëüòàò âûïîëíåíèÿ First.js â êîíñîëüíîì ðåæèìå (cscript.exe)

    Çàïóñê ñöåíàðèÿ èç êîìàíäíîé ñòðîêè â ãðàôè÷åñêîì ðåæèìå

    Ñöåíàðèé ìîæíî âûïîëíèòü èç êîìàíäíîé ñòðîêè ñ ïîìîùüþ (îêîííîé) ãðàôè÷åñêîé âåðñèè WSH wscript.exe. Äëÿ íàøåãî ïðèìåðà â ýòîì ñëó÷àå íóæíî âûïîëíèòü êîìàíäó

    wscript C:\Script\First.js

    Òîãäà â ðåçóëüòàòå âûïîëíåíèÿ ñöåíàðèÿ íà ýêðàíå ïîÿâèòñÿ íóæíîå íàì äèàëîãîâîå îêíî (ðèñ. 1.4).

    Òàêèì îáðàçîì, ìû âèäèì, ÷òî ïðè çàïóñêå ñöåíàðèÿ â êîíñîëüíîì ðåæèìå âûâîä òåêñòîâîé èíôîðìàöèè ïðîèñõîäèò â ñòàíäàðòíûé âûõîäíîé ïîòîê (íà ýêðàí), ïðè çàïóñêå â ãðàôè÷åñêîì ðåæèìå — â äèàëîãîâîå îêíî.

    Ðèñ. 1.4. Ðåçóëüòàò âûïîëíåíèÿ First.js â ãðàôè÷åñêîì ðåæèìå (wscript.exe) 

    Çàïóñê ñöåíàðèÿ ñ ïîìîùüþ ìåíþ Ïóñê

    Äëÿ çàïóñêà ñöåíàðèÿ ñ ïîìîùüþ ïóíêòà Âûïîëíèòü (Run) ìåíþ Ïóñê (Start), äîñòàòî÷íî íàïèñàòü ïîëíîå èìÿ ýòîãî ñöåíàðèÿ â ïîëå Îòêðûòü (Open) (ðèñ. 1.5). 

    Ðèñ. 1.5. Çàïóñê ñöåíàðèÿ èç ìåíþ Ïóñê â Windows ÕÐ


     ýòîì ñëó÷àå ïî óìîë÷àíèþ ñöåíàðèé áóäåò âûïîëíåí ñ ïîìîùüþ wscript.exe, ò.å. âûâîä èíôîðìàöèè áóäåò âåñòèñü â ãðàôè÷åñêîå äèàëîãîâîå îêíî.

    Çàïóñê ñöåíàðèÿ ñ ïîìîùüþ Ïðîâîäíèêà Windows (Windows Explorer)

    Ñàìûì ïðîñòûì ÿâëÿåòñÿ çàïóñê ñöåíàðèÿ â îêíàõ Ïðîâîäíèêà Windows èëè íà ðàáî÷åì ñòîëå — äîñòàòî÷íî ïðîñòî âûïîëíèòü äâîéíîé ùåë÷îê ìûøüþ íà èìåíè ôàéëà ñî ñöåíàðèåì èëè íà åãî çíà÷êå (ðèñ. 1.6).

    Ðèñ. 1.6. Çàïóñê ñöåíàðèÿ ñ ïîìîùüþ Ïðîâîäíèêà Windows


    Ïðè ýòîì, êàê è â ñëó÷àå çàïóñêà ñ ïîìîùüþ ìåíþ Ïóñê (Start), ñöåíàðèé ïî óìîë÷àíèþ âûïîëíÿåòñÿ ñ ïîìîùüþ wscript.exe.

    Óñòàíîâêà è èçìåíåíèå ñâîéñòâ ñöåíàðèåâ

     ñëó÷àå íåîáõîäèìîñòè äëÿ ñöåíàðèåâ ìîæíî çàäàâàòü ðàçëè÷íûå ïàðàìåòðû, âëèÿþùèå íà õîä èõ âûïîëíåíèÿ. Äëÿ êîíñîëüíîé (cscript.exe) è ãðàôè÷åñêîé (wscript.exe) âåðñèé ñåðâåðà ñöåíàðèåâ ýòè ïàðàìåòðû çàäàþòñÿ ïî-ðàçíîìó.

    Ñâîéñòâà è ïàðàìåòðû ñöåíàðèåâ, âûïîëíÿåìûõ ñ ïîìîùüþ cscript.exe

     ýòîì ñëó÷àå èñïîëíåíèå ñöåíàðèÿ êîíòðîëèðóåòñÿ ñ ïîìîùüþ ïàðàìåòðîâ êîìàíäíîé ñòðîêè äëÿ cscript.exe (òàáë. 1.1), êîòîðûå âêëþ÷àþò èëè îòêëþ÷àþò ðàçëè÷íûå îïöèè WSH (âñå ýòè ïàðàìåòðû íà÷èíàþòñÿ ñ ñèìâîëîâ //).


    Òàáëèöà 1.1. Ïàðàìåòðû êîìàíäíîé ñòðîêè cscript.exe

    Ïàðàìåòð Îïèñàíèå
    //I
    Âûêëþ÷àåò ïàêåòíûé ðåæèì (ïî óìîë÷àíèþ). Ïðè ýòîì íà ýêðàí áóäóò âûâîäèòüñÿ âñå ñîîáùåíèÿ îá îøèáêàõ â ñöåíàðèè
    //B
    Âêëþ÷àåò ïàêåòíûé ðåæèì. Ïðè ýòîì íà ýêðàí íå áóäóò âûâîäèòüñÿ íèêàêèå ñîîáùåíèÿ
    //Ò:nn
    Çàäàåò òàéì-àóò â ñåêóíäàõ, ò.å. ñöåíàðèé áóäåò âûïîëíÿòüñÿ nn ñåêóíä, ïîñëå ÷åãî ïðîöåññ ïðåðâåòñÿ. Ïî óìîë÷àíèþ âðåìÿ âûïîëíåíèÿ íå îãðàíè÷åíî
    //Logo
    Âûâîäèò (ïî óìîë÷àíèþ) ïåðåä âûïîëíåíèåì ñöåíàðèÿ èíôîðìàöèþ î âåðñèè è ðàçðàáîò÷èêå WSH
    //Nologo
    Ïîäàâëÿåò âûâîä èíôîðìàöèè î âåðñèè è ðàçðàáîò÷èêå WSH
    //H:CScript
    èëè
    //H:Wscript
    Äåëàåò cscript.åõå èëè wscript.exe ïðèëîæåíèåì äëÿ çàïóñêà ñöåíàðèåâ ïî óìîë÷àíèþ. Åñëè ýòè ïàðàìåòðû íå óêàçàíû, òî ïî óìîë÷àíèþ ïîäðàçóìåâàåòñÿ wscript.exe
    //S
    Ñîõðàíÿåò óñòàíîâêè êîìàíäíîé ñòðîêè äëÿ òåêóùåãî ïîëüçîâàòåëÿ
    //?
    Âûâîäèò âñòðîåííóþ ïîäñêàçêó äëÿ ïàðàìåòðîâ êîìàíäíîé ñòðîêè
    //E:engine
    Âûïîëíÿåò ñöåíàðèé ñ ïîìîùüþ ìîäóëÿ, çàäàííîãî ïàðàìåòðîì engine
    //D
    Âêëþ÷àåò îòëàä÷èê
    //X
    Âûïîëíÿåò ïðîãðàììó â îòëàä÷èêå
    //Job:<JobID>
    Çàïóñêàåò çàäàíèå ñ èíäåêñîì
    JobID
    èç ìíîãîçàäà÷íîãî WS-ôàéëà (ñòðóêòóðà WS-ôàéëîâ áóäåò îïèñàíà â ãëàâå 3)
    //U
    Ïîçâîëÿåò èñïîëüçîâàòü ïðè ïåðåíàïðàâëåíèè ââîäà/âûâîäà ñ êîíñîëè êîäèðîâêó Unicode

    Íàïðèìåð, êîìàíäà

    cscript //Nologo C:\Script\First.js

    çàïóñòèò ñöåíàðèé First.js áåç èíôîðìàöèè î âåðñèè WSH (ðèñ. 1.7).

    Ñöåíàðèé ìîæíî çàïóñêàòü ñ ïàðàìåòðàìè êîìàíäíîé ñòðîêè, êîòîðûå óêàçûâàþòñÿ ïîñëå èìåíè ýòîãî ñöåíàðèÿ (ïðîöåäóðà îáðàáîòêè òàêèõ ïàðàìåòðîâ áóäåò îïèñàíà íèæå, ïðè ðàññìîòðåíèè îáúåêòîâ

    WshArguments
    ,
    WshNamed
    è
    WshUnnamed
    ). Íàïðèìåð, êîìàíäà

    cscript //Â C:\Script\First.js /à /b

    çàïóñòèò ñöåíàðèé First.js â ïàêåòíîì ðåæèìå, ïðè ýòîì

    /à
    è
    /b
    áóäóò ÿâëÿòüñÿ ïàðàìåòðàìè ýòîãî ñöåíàðèÿ, à
    //B
    — ïàðàìåòðîì ïðèëîæåíèÿ cscript.exe.

    Ðèñ. 1.7. Ðåçóëüòàò âûïîëíåíèÿ First.js â êîíñîëüíîì ðåæèìå áåç èíôîðìàöèè î âåðñèè WSH


    Ñâîéñòâà è ïàðàìåòðû ñöåíàðèåâ, âûïîëíÿåìûõ ñ ïîìîùüþ wscript.exe

    Ïðè èñïîëüçîâàíèè äëÿ çàïóñêà ìîäóëÿ wscript.exe ñâîéñòâà ñöåíàðèÿ ìîæíî óñòàíàâëèâàòü ñ ïîìîùüþ âêëàäêè Ñöåíàðèé (Script) äèàëîãîâîãî îêíà, çàäàþùåãî ñâîéñòâà ôàéëà â Windows (ðèñ. 1.8).

    Ïîñëå çàäàíèÿ ñâîéñòâ ñöåíàðèÿ àâòîìàòè÷åñêè ñîçäàåòñÿ ôàéë ñ èìåíåì ýòîãî ñöåíàðèÿ è ðàñøèðåíèåì wsh, êîòîðûé èìååò ñòðóêòóðó íàïîäîáèå ini-ôàéëà, íàïðèìåð:

    [ScriptFile]

    Path=C:\Script\First.js

    [Options]

    Timeout=0

    DisplayLogo=1

    Åñëè äâàæäû ùåëêíóòü â Ïðîâîäíèêå Windows ïî wsh-ôàéëó èëè çàïóñòèòü òàêîé ôàéë èç êîìàíäíîé ñòðîêè, òî ñîîòâåòñòâóþùèé ñåðâåð ñöåíàðèåâ (wscript.exe èëè cscript.exe) çàïóñòèò ñöåíàðèé, êîòîðîìó ñîîòâåòñòâóåò wsh- ôàéë, ñ çàäàííûìè â ñåêöèè Options ïàðàìåòðàìè.

    Çàìå÷àíèå 

    Åñëè wsh-ôaéë íå çàïóñêàåòñÿ, íóæíî ïðîâåðèòü íàëè÷èå íà äèñêå ôàéëà, óêàçàííîãî â ñåêöèè ScriptFile.

    Ðèñ. 1.8. Óñòàíîâêà ñâîéñòâ ñöåíàðèÿ First.js


    Ïðè çàïóñêå ñöåíàðèåâ ñ ïîìîùüþ wscript.exe äëÿ çàäàíèÿ ïàðàìåòðîâ êîìàíäíîé ñòðîêè ñöåíàðèÿ ìîæíî èñïîëüçîâàòü òåõíîëîãèþ drag-and-drop — åñëè âûäåëèòü â Ïðîâîäíèêå Windows íåñêîëüêî ôàéëîâ è ïåðåòàùèòü èõ íà ÿðëûê ñöåíàðèÿ, òî ýòîò ñöåíàðèé çàïóñòèòñÿ, à èìåíà âûäåëåííûõ ôàéëîâ ïåðåäàäóòñÿ åìó â êà÷åñòâå ïàðàìåòðîâ.

    Ñòàíäàðòíûå îáúåêòû WSH5.6

    Ïåðåéäåì òåïåðü ê îïèñàíèþ ñîáñòâåííîé îáúåêòíîé ìîäåëè WSH 5.6. Ñ ïîìîùüþ âíóòðåííèõ îáúåêòîâ ýòîé âåðñèè WSH èç ñöåíàðèåâ ìîæíî âûïîëíÿòü ñëåäóþùèå îñíîâíûå çàäà÷è:

    ? âûâîäèòü èíôîðìàöèþ â ñòàíäàðòíûé âûõîäíîé ïîòîê (íà ýêðàí) èëè â äèàëîãîâîå îêíî Windows;

    ? ÷èòàòü äàííûå èç ñòàíäàðòíîãî âõîäíîãî ïîòîêà (ò. å. ââîäèòü äàííûå ñ êëàâèàòóðû) èëè èñïîëüçîâàòü èíôîðìàöèþ, âûâîäèìóþ äðóãîé êîìàíäîé;

    ? èñïîëüçîâàòü ñâîéñòâà è ìåòîäû âíåøíèõ îáúåêòîâ, à òàêæå îáðàáàòûâàòü ñîáûòèÿ, êîòîðûå ãåíåðèðóþòñÿ ýòèìè îáúåêòàìè;

    ? çàïóñêàòü íîâûå íåçàâèñèìûå ïðîöåññû èëè àêòèâèçèðîâàòü óæå èìåþùèåñÿ;

    ? çàïóñêàòü äî÷åðíèå ïðîöåññû ñ âîçìîæíîñòüþ êîíòðîëÿ èõ ñîñòîÿíèÿ è äîñòóïà ê èõ ñòàíäàðòíûì âõîäíûì è âûõîäíûì ïîòîêàì;

    ? ðàáîòàòü ñ ëîêàëüíîé ñåòüþ: îïðåäåëÿòü èìÿ çàðåãèñòðèðîâàâøåãîñÿ ïîëüçîâàòåëÿ, ïîäêëþ÷àòü ñåòåâûå äèñêè è ïðèíòåðû;

    ? ïðîñìàòðèâàòü è èçìåíÿòü ïåðåìåííûå ñðåäû;

    ? ïîëó÷àòü äîñòóï ê ñïåöèàëüíûì ïàïêàì Windows;

    ? ñîçäàâàòü ÿðëûêè Windows;

    ? ðàáîòàòü ñ ñèñòåìíûì ðååñòðîì.

     WSH 5.6 âõîäÿò ïåðå÷èñëåííûå íèæå îáúåêòû:

    ? 

    WScript
    . Ýòî ãëàâíûé îáúåêò WSH, êîòîðûé ñëóæèò äëÿ ñîçäàíèÿ äðóãèõ îáúåêòîâ èëè ñâÿçè ñ íèìè, ñîäåðæèò ñâåäåíèÿ î ñåðâåðå ñöåíàðèåâ, à òàêæå ïîçâîëÿåò ââîäèòü äàííûå ñ êëàâèàòóðû è âûâîäèòü èíôîðìàöèþ íà ýêðàí èëè â îêíî Windows.

    ?

    WshArguments
    . Îáåñïå÷èâàåò äîñòóï êî âñåì ïàðàìåòðàì êîìàíäíîé ñòðîêè çàïóùåííîãî ñöåíàðèÿ èëè ÿðëûêà Windows.

    ?

    WshNamed
    . Îáåñïå÷èâàåò äîñòóï ê èìåííûì ïàðàìåòðàì êîìàíäíîé ñòðîêè çàïóùåííîãî ñöåíàðèÿ.

    ?

    WshUnnamed
    . Îáåñïå÷èâàåò äîñòóï ê áåçûìÿííûì ïàðàìåòðàì êîìàíäíîé ñòðîêè çàïóùåííîãî ñöåíàðèÿ.

    ? 

    WshShell
    . Ïîçâîëÿåò çàïóñêàòü íåçàâèñèìûå ïðîöåññû, ñîçäàâàòü ÿðëûêè, ðàáîòàòü ñ ïåðåìåííûìè ñðåäû, ñèñòåìíûì ðååñòðîì è ñïåöèàëüíûìè ïàïêàìè Windows.

    ?

    WshSpecialFolders
    . Îáåñïå÷èâàåò äîñòóï ê ñïåöèàëüíûì ïàïêàì Windows.

    ?

    WshShortcut
    . Ïîçâîëÿåò ðàáîòàòü ñ ÿðëûêàìè Windows.

    ?

    WshUrlShortcut
    . Ïðåäíàçíà÷åí äëÿ ðàáîòû ñ ÿðëûêàìè ñåòåâûõ ðåñóðñîâ.

    ?

    WshEnvironment
    . Ïðåäíàçíà÷åí äëÿ ïðîñìîòðà, èçìåíåíèÿ è óäàëåíèÿ ïåðåìåííûõ ñðåäû.

    ?

    WshNetwork
    . Èñïîëüçóåòñÿ ïðè ðàáîòå ñ ëîêàëüíîé ñåòüþ: ñîäåðæèò ñåòåâóþ èíôîðìàöèþ äëÿ ëîêàëüíîãî êîìïüþòåðà, ïîçâîëÿåò ïîäêëþ÷àòü ñåòåâûå äèñêè è ïðèíòåðû.

    ?

    WshScriptExec
    . Ïîçâîëÿåò çàïóñêàòü êîíñîëüíûå ïðèëîæåíèÿ â êà÷åñòâå äî÷åðíèõ ïðîöåññîâ, îáåñïå÷èâàåò êîíòðîëü ñîñòîÿíèÿ ýòèõ ïðèëîæåíèé è äîñòóï ê èõ ñòàíäàðòíûì âõîäíûì è âûõîäíûì ïîòîêàì.

    ?

    WshController
    . Ïîçâîëÿåò çàïóñêàòü ñöåíàðèè íà óäàëåííûõ ìàøèíàõ.

    ?

    WshRemote
    . Ïîçâîëÿåò óïðàâëÿòü ñöåíàðèåì, çàïóùåííûì íà óäàëåííîé ìàøèíå.

    ?

    WshRemoteError
    . Èñïîëüçóåòñÿ äëÿ ïîëó÷åíèÿ èíôîðìàöèè îá îøèáêå, âîçíèêøåé â ðåçóëüòàòå âûïîëíåíèÿ ñöåíàðèÿ, çàïóùåííîãî íà óäàëåííîé ìàøèíå.

    Êðîìå ýòîãî, èìååòñÿ îáúåêò FileSystemObject, îáåñïå÷èâàþùèé äîñòóï ê ôàéëîâîé ñèñòåìå êîìïüþòåðà (ýòîò îáúåêò áóäåò ïîäðîáíî îïèñàí â ãëàâå 5).

    Ïåðåéäåì òåïåðü ê ðàññìîòðåíèþ ñâîéñòâ è ìåòîäîâ âíóòðåííèõ îáúåêòîâ WSH.

    Çàìå÷àíèå

    Ïðèìåðû âñåõ ñöåíàðèåâ, ïðèâåäåííûõ äàëåå â ýòîé ãëàâå, íàïèñàíû íà JScript. Òàê êàê ýòè ñöåíàðèè òîëüêî èëëþñòðèðóþò ñâîéñòâà è ìåòîäû WSH è íå èñïîëüçóþò îñîáåííîñòåé, õàðàêòåðíûõ òîëüêî äëÿ JScript, ïåðåâîä èõ íà VBScript íå ïðåäñòàâëÿåò íèêàêîãî òðóäà.

    Îáúåêò WScript

    Ñâîéñòâà îáúåêòà

    WScript
    ïîçâîëÿþò ïîëó÷èòü ïîëíûé ïóòü ê èñïîëüçóþùåìóñÿ ñåðâåðó ñöåíàðèåâ (wscript.exe èëè cscript.exe), ïàðàìåòðû êîìàíäíîé ñòðîêè, ñ êîòîðûìè çàïóùåí ñöåíàðèé, ðåæèì åãî ðàáîòû (èíòåðàêòèâíûé èëè ïàêåòíûé). Êðîìå ýòîãî, ñ ïîìîùüþ ñâîéñòâ îáúåêòà
    WScript
    ìîæíî âûâîäèòü èíôîðìàöèþ â ñòàíäàðòíûé âûõîäíîé ïîòîê è ÷èòàòü äàííûå èç ñòàíäàðòíîãî âõîäíîãî ïîòîêà. Òàêæå
    WScript
    ïðåäîñòàâëÿåò ìåòîäû äëÿ ðàáîòû âíóòðè ñöåíàðèÿ ñ îáúåêòàìè àâòîìàòèçàöèè è âûâîäà èíôîðìàöèè íà ýêðàí (â òåêñòîâîì ðåæèìå) èëè â îêíî Windows.

    Îòìåòèì, ÷òî â ñöåíàðèè WSH îáúåêò

    WScript
    ìîæíî èñïîëüçîâàòü ñðàçó, áåç êàêîãî-ëèáî ïðåäâàðèòåëüíîãî îïèñàíèÿ èëè ñîçäàíèÿ, ò. ê. åãî ýêçåìïëÿð ñîçäàåòñÿ ñåðâåðîì ñöåíàðèåâ àâòîìàòè÷åñêè. Äëÿ èñïîëüçîâàíèÿ æå âñåõ îñòàëüíûõ îáúåêòîâ íóæíî ïðèìåíÿòü ëèáî ìåòîä
    CreateObject
    , ëèáî îïðåäåëåííîå ñâîéñòâî äðóãîãî îáúåêòà.

    Ñâîéñòâà îáúåêòà

    WScript
    ïðåäñòàâëåíû â òàáë. 1.2.


    Òàáëèöà 1.2. Ñâîéñòâà îáúåêòà

    WScript

    Ñâîéñòâî Îïèñàíèå
    Application
    Ïðåäîñòàâëÿåò èíòåðôåéñ
    IDispatch
    äëÿ îáúåêòà
    WScript
    Arguments
    Ñîäåðæèò óêàçàòåëü íà êîëëåêöèþ
    WshArguments
    , â êîòîðîé íàõîäÿòñÿ ïàðàìåòðû êîìàíäíîé ñòðîêè äëÿ èñïîëíÿåìîãî ñöåíàðèÿ
    FullName
    Ñîäåðæèò ïîëíûé ïóòü ê èñïîëíÿåìîìó ôàéëó ñåðâåðà ñöåíàðèåâ (â Windows ÕÐ îáû÷íî ýòî C:\WINDOWS\SYSTEM32\CSCRIPT.EXE èëè C:\WINDOWS\SYSTEM32\WSCRIPT.EXE)
    Name
    Ñîäåðæèò íàçâàíèå îáúåêòà
    Wscript
    (Windows Script Host)
    Path
    Ñîäåðæèò ïóòü ê êàòàëîãó, â êîòîðîì íàõîäèòñÿ cscript.exe èëè wscript.exe (â Windows ÕÐ îáû÷íî ýòî C:\WINDOWS\SYSTEM32)
    ScriptFullName
    Ñîäåðæèò ïîëíûé ïóòü ê çàïóùåííîìó ñöåíàðèþ
    ScriptName
    Ñîäåðæèò èìÿ çàïóùåííîãî ñöåíàðèÿ
    StdErr
    Ïîçâîëÿåò çàïóùåííîìó ñöåíàðèþ çàïèñûâàòü ñîîáùåíèÿ â ñòàíäàðòíûé ïîòîê äëÿ îøèáîê
    StdIn
    Ïîçâîëÿåò çàïóùåííîìó ñöåíàðèþ ÷èòàòü èíôîðìàöèþ èç ñòàíäàðòíîãî âõîäíîãî ïîòîêà
    StdOut
    Ïîçâîëÿåò çàïóùåííîìó ñöåíàðèþ çàïèñûâàòü èíôîðìàöèþ â ñòàíäàðòíûé âûõîäíîé ïîòîê
    Version
    Ñîäåðæèò âåðñèþ WSH

    Îïèøåì áîëåå ïîäðîáíî òå ñâîéñòâà îáúåêòà WScript, êîòîðûå òðåáóþò äîïîëíèòåëüíûõ ïîÿñíåíèé.

    Ñâîéñòâî Arguments

    Â ñëåäóþùåì ïðèìåðå (ëèñòèíã 1.1) ñ ïîìîùüþ öèêëà for íà ýêðàí âûâîäÿòñÿ âñå ïàðàìåòðû êîìàíäíîé ñòðîêè, ñ êîòîðûìè áûë çàïóùåí ñöåíàðèé.

    Ëèñòèíã 1.1. Âûâîä íà ýêðàí âñåõ ïàðàìåòðîâ ñöåíàðèÿ

    /*******************************************************************/

    /* Èìÿ: ShowArgs.js                                                */

    /* ßçûê: JScript                                                   */

    /* Îïèñàíèå: Âûâîä íà ýêðàí ïàðàìåòðîâ çàïóùåííîãî ñöåíàðèÿ        */

    /*******************************************************************/

    var i, objArgs;

    objArgs = WScript.Arguments; //Ñîçäàåì îáúåêò WshArguments

    for (i=0; i<=objArgs.Count()-1; i++)

     WScript.Echo(objArgs(i)); //Âûâîäèì íà ýêðàí i-é àðãóìåíò

    /*************  Êîíåö *********************************************/

    Äðóãèå ïðèìåðû ðàáîòû ñ àðãóìåíòàìè êîìàíäíîé ñòðîêè ïðèâåäåíû â ëèñòèíãàõ 1.4, 1.5, 2.22 è 2.23.

    Ñâîéñòâà StdErr, StdIn, StdOut

    Äîñòóï ê ñòàíäàðòíûì âõîäíûì è âûõîäíûì ïîòîêàì ñ ïîìîùüþ ñâîéñòâ

    StdIn
    ,
    StdOut
    è
    StdErr
    ìîæíî ïîëó÷èòü òîëüêî â òîì ñëó÷àå, åñëè ñöåíàðèé çàïóñêàëñÿ â êîíñîëüíîì ðåæèìå ñ ïîìîùüþ cscript.exe. Åñëè ñöåíàðèé áûë çàïóùåí ñ ïîìîùüþ wscript.exe, òî ïðè ïîïûòêå îáðàòèòüñÿ ê ýòèì ñâîéñòâàì âîçíèêíåò îøèáêà "
    Invalid Handle
    " (ðèñ. 1.9).

    Ðèñ. 1.9. Îøèáêà ïðè îáðàùåíèè ê

    StdIn
    â ãðàôè÷åñêîì ðåæèìå


    Ðàáîòàòü ñ ïîòîêàìè

    StdOut
    è
    StdErr
    ìîæíî ñ ïîìîùüþ ìåòîäîâ
    Write
    ,
    WriteLine
    ,
    WriteBlankLines
    , à ñ ïîòîêîì
    StdIn
    — ñ ïîìîùüþ ìåòîäîâ
    Read
    ,
    ReadLine
    ,
    ReadAll
    ,
    Skip
    ,
    SkipLine
    . Ýòè ìåòîäû êðàòêî îïèñàíû â òàáë. 1.3.


    Òàáëèöà 1.3. Ìåòîäû äëÿ ðàáîòû ñ ïîòîêàìè

    Ìåòîä Îïèñàíèå
    Read(n)
    Ñ÷èòûâàåò èç ïîòîêà
    StdIn
    çàäàííîå ïàðàìåòðîì n ÷èñëî ñèìâîëîâ è âîçâðàùàåò ïîëó÷åííóþ ñòðîêó
    ReadAll()
    ×èòàåò ñèìâîëû èç ïîòîêà
    StdIn
    äî òåõ ïîð, ïîêà íå âñòðåòèòñÿ ñèìâîë êîíöà ôàéëà ASCII 26 (<Ctrl>+<Z>), è âîçâðàùàåò ïîëó÷åííóþ ñòðîêó
    ReadLine()
    Âîçâðàùàåò ñòðîêó, ñ÷èòàííóþ èç ïîòîêà
    StdIn
    Skip(n)
    Ïðîïóñêàåò ïðè ÷òåíèè èç ïîòîêà
    StdIn
    çàäàííîå ïàðàìåòðîì n ÷èñëî ñèìâîëîâ
    SkipLine()
    Ïðîïóñêàåò öåëóþ ñòðîêó ïðè ÷òåíèè èç ïîòîêà
    StdIn
    Write(string)
    Çàïèñûâàåò â ïîòîê
    StdOut
    èëè
    StdErr
    ñòðîêó
    string
    (áåç ñèìâîëà êîíöà ñòðîêè)
    WriteBlankLines(n)
    Çàïèñûâàåò â ïîòîê
    StdOut
    èëè
    StdErr
    çàäàííîå ïàðàìåòðîì n ÷èñëî ïóñòûõ ñòðîê
    WriteLine(string)
    Çàïèñûâàåò â ïîòîê
    StdOut
    èëè
    StdErr
    ñòðîêó
    string
    (âìåñòå ñ ñèìâîëîì êîíöà ñòðîêè)

    Íàïîìíèì, ÷òî îïåðàöèîííàÿ ñèñòåìà Windows ïîääåðæèâàåò ìåõàíèçì êîíâåéåðèçàöèè (ñèìâîë "|" â êîìàíäíîé ñòðîêå). Ýòîò ìåõàíèçì äåëàåò âîçìîæíûì ïåðåäà÷ó äàííûõ îò îäíîé ïðîãðàììû ê äðóãîé. Òàêèì îáðàçîì, èñïîëüçóÿ ñòàíäàðòíûå âõîäíûå è âûõîäíûå ïîòîêè, ìîæíî èç ñöåíàðèÿ îáðàáàòûâàòü ñòðîêè âûâîäà äðóãîãî ïðèëîæåíèÿ èëè ïåðåíàïðàâëÿòü âûâîäèìûå ñöåíàðèåì äàííûå íà âõîä ïðîãðàìì-ôèëüòðîâ (

    FIND
    èëè
    SORT
    ). Íàïðèìåð, ñëåäóþùàÿ êîìàíäà áóäåò ñîðòèðîâàòü ñòðîêè âûâîäà ñöåíàðèÿ example.js è âûâîäèòü èõ â ôàéë sort.txt:

    cscript //Nologo example.js | sort > sort.txt

    Îïöèÿ //Nologo çäåñü íóæíà äëÿ òîãî, ÷òîáû â ôàéë sort.txt íå ïîïàäàëè ñòðîêè ñ èíôîðìàöèåé î ðàçðàáîò÷èêå è íîìåðå âåðñèè WSH.

    Êðîìå ýòîãî, ñ ïîìîùüþ ìåòîäîâ, ðàáîòàþùèõ ñ âõîäíûì ïîòîêîì StdIn, ìîæíî îðãàíèçîâûâàòü äèàëîã ñ ïîëüçîâàòåëåì, ò. å. ñîçäàâàòü èíòåðàêòèâíûå ñöåíàðèè. Ïðèìåð òàêîãî ñöåíàðèÿ ïðåäñòàâëåí â ëèñòèíãå 1.2.

    Ëèñòèíã 1.2. Ïðèìåð èíòåðàêòèâíîãî ñöåíàðèÿ

    /*******************************************************************/

    /* Èìÿ: Interact.js                                                */

    /* ßçûê: JScript                                                   */

    /* Îïèñàíèå: Ââîä/âûâîä ñòðîê â êîíñîëüíîì ðåæèìå                  */

    /*******************************************************************/

    var s;

    //Âûâîäèì ñòðîêó íà ýêðàí

    WScript.StdOut.Write("Ââåäèòå ÷èñëî: ");

    //Ñ÷èòûâàåì ñòðîêó

    s = WScript.StdIn.ReadLine();

    //Âûâîäèì ñòðîêó íà ýêðàí

    WScript.StdOut.WriteLine("Âû ââåëè ÷èñëî " + s);

    /*************  Êîíåö *********************************************/

    Îáúåêò

    WScript
    èìååò íåñêîëüêî ìåòîäîâ, êîòîðûå îïèñàíû â òàáë. 1.4.


    Òàáëèöà 1.4. Ìåòîäû îáúåêòà

    WScript

    Ìåòîä Îïèñàíèå
    CreateObject(strProgID [, strPrefix])
    Ñîçäàåò îáúåêò, çàäàííûé ïàðàìåòðîì
    strProgID
    ConnectObject(strObject, strPrefix)
    Óñòàíàâëèâàåò ñîåäèíåíèå ñ îáúåêòîì
    strObject
    , ïîçâîëÿþùåå ïèñàòü ôóíêöèè-îáðàáîò÷èêè åãî ñîáûòèé (èìåíà ýòèõ ôóíêöèé äîëæíû íà÷èíàòüñÿ ñ ïðåôèêñà
    strPrefix
    )
    DisconnectObject(obj)
    Îòñîåäèíÿåò îáúåêò
    obj
    , ñâÿçü ñ êîòîðûì áûëà ïðåäâàðèòåëüíî óñòàíîâëåíà â ñöåíàðèè
    Echo([Arg1] [, Arg2] [,…])
    Âûâîäèò òåêñòîâóþ èíôîðìàöèþ íà êîíñîëü èëè â äèàëîãîâîå îêíî
    GetObject(strPathname [, strProgID], [strPrefix])
    Àêòèâèçèðóåò îáúåêò àâòîìàòèçàöèè, îïðåäåëÿåìûé çàäàííûì ôàéëîì (ïàðàìåòð
    strPathName
    ), èëè îáúåêò, çàäàííûé ïàðàìåòðîì
    strProgID
    Quit([intErrorCode])
    Ïðåðûâàåò âûïîëíåíèå ñöåíàðèÿ ñ çàäàííûì ïàðàìåòðîì
    intErrorCode
    êîäîì âûõîäà. Åñëè ïàðàìåòð
    intErrorCode
    íå çàäàí, òî îáúåêò
    WScript
    óñòàíîâèò êîä âûõîäà ðàâíûì íóëþ
    Sleep(intTime)
    Ïðèîñòàíàâëèâàåò âûïîëíåíèÿ ñöåíàðèÿ (ïåðåâîäèò åãî â íåàêòèâíîå ñîñòîÿíèå) íà çàäàííîå ïàðàìåòðîì
    intTime
    ÷èñëî ìèëëèñåêóíä

    Ïðèâåäåì äîïîëíèòåëüíûå ïîÿñíåíèÿ è ïðèìåðû èñïîëüçîâàíèÿ äëÿ ìåòîäîâ, ïðèâåäåííûõ â òàáë. 1.4.

    Ìåòîä CreateObject

    Ñòðîêîâûé ïàðàìåòð

    strProgID
    , óêàçûâàåìûé â ìåòîäå
    CreateObject
    , íàçûâàåòñÿ ïðîãðàììíûì èäåíòèôèêàòîðîì îáúåêòà (Programmic Identifier, ProgID).

    Åñëè óêàçàí íåîáÿçàòåëüíûé ïàðàìåòð

    strPrefix
    , òî ïîñëå ñîçäàíèÿ îáúåêòà â ñöåíàðèè ìîæíî îáðàáàòûâàòü ñîáûòèÿ, âîçíèêàþùèå â ýòîì îáúåêòå (åñòåñòâåííî, åñëè îáúåêò ïðåäîñòàâëÿåò èíòåðôåéñû äëÿ ñâÿçè ñ ýòèìè ñîáûòèÿìè). Êîãäà îáúåêò ñîîáùàåò î âîçíèêíîâåíèè îïðåäåëåííîãî ñîáûòèÿ, ñåðâåð ñöåíàðèåâ âûçûâàåò ôóíêöèþ, èìÿ êîòîðîé ñîñòîèò èç ïðåôèêñà
    strPrefix
    è èìåíè ýòîãî ñîáûòèÿ. Íàïðèìåð, åñëè â êà÷åñòâå
    strPrefix
    óêàçàíî "
    MYOBJ_
    ", à îáúåêò ñîîáùàåò î âîçíèêíîâåíèè ñîáûòèÿ "
    OnBegin
    ", òî áóäåò çàïóùåíà ôóíêöèÿ "
    MYOBJ_OnBegin
    ", êîòîðàÿ äîëæíà áûòü îïèñàíà â ñöåíàðèè.

    Â ñëåäóþùåì ïðèìåðå ìåòîä

    CreateObject
    èñïîëüçóåòñÿ äëÿ ñîçäàíèÿ îáúåêòà
    WshNetwork
    :

    var WshNetwork = WScript.Createobject("WScript.Network");

    Îòìåòèì, ÷òî îáúåêòû àâòîìàòèçàöèè èç ñöåíàðèåâ ìîæíî ñîçäàâàòü è áåç ïîìîùè WSH. Â JScript äëÿ ýòîãî èñïîëüçóåòñÿ îáúåêò

    ActiveXObject
    , íàïðèìåð:

    var WshNetwork = new ActiveXObject("WScript.Network");

    Â VBscript äëÿ ñîçäàíèÿ îáúåêòîâ ìîæåò èñïîëüçîâàòüñÿ ñïåöèàëüíàÿ ôóíêöèÿ

    CreateObject
    , íàïðèìåð:

    Set WshNetwork = CreateObject("WScript.Network")

    Îäíàêî îðãàíèçîâàòü â ñöåíàðèè îáðàáîòêó ñîáûòèé ñîçäàâàåìîãî îáúåêòà ìîæíî òîëüêî ïðè èñïîëüçîâàíèè ìåòîäà

    WScript.CreateObject
    .

    Ìåòîä ConnectObject

    Îáúåêò, ñîåäèíåíèå ñ êîòîðûì îñóùåñòâëÿåòñÿ ñ ïîìîùüþ ìåòîäà

    ConnectObject
    , äîëæåí ïðåäîñòàâëÿòü èíòåðôåéñ ê ñâîèì ñîáûòèÿì.

    Â ñëåäóþùåì ïðèìåðå â ïåðåìåííîé

    MyObject
    ñîçäàåòñÿ àáñòðàêòíûé îáúåêò "
    SomeObject
    ", çàòåì èç ñöåíàðèÿ âûçûâàåòñÿ ìåòîä
    SomeMetod
    ýòîãî îáúåêòà. Ïîñëå ýòîãî óñòàíàâëèâàåòñÿ ñâÿçü ñ ïåðåìåííîé
    MyObject
    è çàäàåòñÿ ïðåôèêñ "
    MyEvent
    " äëÿ ïðîöåäóð îáðàáîòêè ñîáûòèÿ ýòîãî îáúåêòà. Åñëè â îáúåêòå âîçíèêíåò ñîáûòèå ñ èìåíåì "
    Event
    ", òî áóäåò âûçâàíà ôóíêöèÿ
    MyEvent_Event
    . Ìåòîä
    DisconnectObject
    îáúåêòà
    WScript
    ïðîèçâîäèò îòñîåäèíåíèå îáúåêòà
    MyObject
    .

    var MyObject = WScript.CreateObject("SomeObject");

    MyObject.SomeMethod();

    WScript.ConnectObject(MyObject, "MyEvent");


    function MyEvent_Event(strName) {

     WScript.Echo(strName);

    }

    WScript.DisconnectObject(MyObject);

    Ìåòîä DisconnectObject

    Åñëè ñîåäèíåíèÿ ñ îáúåêòîì

    obj
    íå áûëî óñòàíîâëåíî, òî ìåòîä
    DisconnectObject(obj)
    íå áóäåò ïðîèçâîäèòü íèêàêèõ äåéñòâèé. Ïðèìåð ïðèìåíåíèÿ
    DisconnectObject
    áûë ïðèâåäåí âûøå.

    Ìåòîä Echo

    Ïàðàìåòðû

    Arg1
    ,
    Arg2
    çàäàþò àðãóìåíòû äëÿ âûâîäà. Åñëè ñöåíàðèé áûë çàïóùåí ñ ïîìîùüþ wscript.exe, òî ìåòîä
    Echo
    íàïðàâëÿåò âûâîä â äèàëîãîâîå îêíî, åñëè æå äëÿ âûïîëíåíèÿ ñöåíàðèÿ ïðèìåíÿåòñÿ cscript.exe, òî âûâîä áóäåò íàïðàâëåí íà ýêðàí (êîíñîëü). Êàæäûé èç àðãóìåíòîâ ïðè âûâîäå áóäåò ðàçäåëåí ïðîáåëîì.  ñëó÷àå èñïîëüçîâàíèÿ cscript.exe âûâîä âñåõ àðãóìåíòîâ áóäåò çàâåðøåí ñèìâîëîì íîâîé ñòðîêè. Åñëè â ìåòîäå Echo íå çàäàí íè îäèí àðãóìåíò, òî áóäåò íàïå÷àòàíà ïóñòàÿ ñòðîêà.

    Íàïðèìåð, ïîñëå âûïîëíåíèÿ ñöåíàðèÿ EchoExample.js (ëèñòèíã 1.3) ñ ïîìîùüþ cscript.exe íà ýêðàí áóäóò âûâåäåíû ïóñòàÿ ñòðîêà, òðè ÷èñëà è ñòðîêà òåêñòà (ðèñ. 1.10).

    Ëèñòèíã 1.3. Ñöåíàðèé EchoExample.js

    /*******************************************************************/

    /* Èìÿ: EchoExample.js                                             */

    /* ßçûê: JScript                                                   */

    /* Îïèñàíèå: Èñïîëüçîâàíèå ìåòîäà WScript.Echo                     */

    /*******************************************************************/

    WScript.Echo();  //Âûâîäèì ïóñòóþ ñòðîêó

    WScript.Echo(1,2,3); //Âûâîäèì ÷èñëà

    WScript.Echo("Ïðèâåò!"); //Âûâîäèì ñòðîêó

    /*************  Êîíåö *********************************************/

    Ðèñ. 1.10. Âûâîä èíôîðìàöèè ñ ïîìîùüþ ìåòîäà Echo


    Äðóãèå ïðèìåðû èñïîëüçîâàíèÿ ìåòîäà

    Echo
    ïðèâåäåíû â ãëàâå 2 (ñì. ëèñòèíãè 2.1, 2.2, 2.4 è 2.5).

    Ìåòîä Sleep

    Â ñëåäóþùåì ïðèìåðå ñöåíàðèé ïåðåâîäèòñÿ â íåàêòèâíîå ñîñòîÿíèå íà 5 ñåêóíä:

    WScript.Echo("Ñöåíàðèé çàïóùåí, îòäûõàåì...");

    WScript.Sleep(5000);

    WScript.Echo("Âûïîëíåíèå çàâåðøåíî");

    Ìåòîä

    Sleep
    íåîáõîäèìî ïðèìåíÿòü ïðè àñèíõðîííîé ðàáîòå ñöåíàðèÿ è êàêîé-ëèáî äðóãîé çàäà÷è, íàïðèìåð, ïðè èìèòàöèè íàæàòèé êëàâèø â àêòèâíîì îêíå ñ ïîìîùüþ ìåòîäà
    WshShell.SendKeys
    (ñì. ëèñòèíãè 1.13, 2.31, 2.32).

    Îáúåêòû-êîëëåêöèè

     WSH âõîäÿò îáúåêòû, ñ ïîìîùüþ êîòîðûõ ìîæíî ïîëó÷èòü äîñòóï ê êîëëåêöèÿì, ñîäåðæàùèì ñëåäóþùèå ýëåìåíòû:

    ? ïàðàìåòðû êîìàíäíîé ñòðîêè çàïóùåííîãî ñöåíàðèÿ èëè ÿðëûêà Windows (îáúåêòû

    WshArguments
    ,
    WshNamed
    è
    WshUnnamed
    );

    ? çíà÷åíèÿ ïåðåìåííûõ ñðåäû (îáúåêò

    WshEnvironment
    );

    ? ïóòè ê ñïåöèàëüíûì ïàïêàì Windows (îáúåêò

    WshSpecialFolders
    ).

    Îáúåêò WshArguments

    Îáúåêò

    WshArguments
    ñîäåðæèò êîëëåêöèþ âñåõ ïàðàìåòðîâ êîìàíäíîé ñòðîêè çàïóùåííîãî ñöåíàðèÿ èëè ÿðëûêà Windows. Ýòîò îáúåêò ìîæíî ñîçäàòü òîëüêî ñ ïîìîùüþ ñâîéñòâà
    Arguments
    îáúåêòîâ
    WScript
    è
    WshShortcut
    .

    Â ïðèíöèïå, ðàáîòàòü ñ ýëåìåíòàìè êîëëåêöèè

    WshArguments
    ìîæíî ñòàíäàðòíûì äëÿ JScript îáðàçîì — ñîçäàòü îáúåêò
    Enumerator
    è èñïîëüçîâàòü åãî ìåòîäû
    moveNext
    ,
    item
    è
    atEnd
    . Íàïðèìåð, âûâåñòè íà ýêðàí âñå ïàðàìåòðû êîìàíäíîé ñòðîêè, ñ êîòîðûìè çàïóùåí ñöåíàðèé, ìîæíî ñëåäóþùèì îáðàçîì (ëèñòèíã 1.4).

    Ëèñòèíã 1.4. Âûâîä âñåõ ïàðàìåòðîâ ñöåíàðèÿ (ñòàíäàðòíûå êîëëåêöèè JScript)

    /********************************************************************/

    /* Èìÿ: EnumArgs.js                                                 */

    /* ßçûê: JScript                                                    */

    /* Îïèñàíèå: Âûâîä íà ýêðàí ïàðàìåòðîâ çàïóùåííîãî ñöåíàðèÿ         */

    /********************************************************************/

    var objArgs, e, x;

    objArgs = WScript.Arguments; //Ñîçäàåì îáúåêò WshArguments

    //Ñîçäàåì îáúåêò Enumerator äëÿ êîëëåêöèè objArgs

    e = new Enumerator(objArgs);

    for (;!e.atEnd();e.moveNext()) {

     x = e.item();  //Ïîëó÷àåì çíà÷åíèå ýëåìåíòà êîëëåêöèè

     WScript.Echo(x); //Âûâîäèì çíà÷åíèå ïàðàìåòðà íà ýêðàí

    }

    /*************  Êîíåö *********************************************/

    Îäíàêî íàìíîãî óäîáíåå èñïîëüçîâàòü ìåòîäû

    Count
    è
    Item
    ñàìîãî îáúåêòà
    WshArguments
    (ìåòîä
    Item
    èìååòñÿ ó âñåõ êîëëåêöèé WSH). Ìåòîä
    Count
    âîçâðàùàåò ÷èñëî ýëåìåíòîâ â êîëëåêöèè, ò. å. êîëè÷åñòâî àðãóìåíòîâ êîìàíäíîé ñòðîêè, à ìåòîä
    Item(n)
    — çíà÷åíèå n-ãî ýëåìåíòà êîëëåêöèè (íóìåðàöèÿ íà÷èíàåòñÿ ñ íóëÿ). Áîëåå òîãî, ÷òîáû ïîëó÷èòü çíà÷åíèå îòäåëüíîãî ýëåìåíòà êîëëåêöèè
    WshArguments
    , ìîæíî ïðîñòî óêàçàòü åãî èíäåêñ â êðóãëûõ ñêîáêàõ ïîñëå èìåíè îáúåêòà.

    Çàìå÷àíèå

    ×èñëî ýëåìåíòîâ â êîëëåêöèè õðàíèòñÿ è â ñâîéñòâå

    Length
    îáúåêòà
    WshArguments
    .

    Òàêèì îáðàçîì, ïðåäûäóùèé ïðèìåð ìîæíî ïåðåïèñàòü áîëåå êîìïàêòíûì îáðàçîì (ëèñòèíã 1.5).

    Ëèñòèíã 1.5. Âûâîä âñåõ ïàðàìåòðîâ ñöåíàðèÿ (ìåòîäû WSH)

    /*******************************************************************/

    /* Èìÿ: ShowArgs.js                                                */

    /* ßçûê: JScript                                                   */

    /* Îïèñàíèå: Âûâîä íà ýêðàí ïàðàìåòðîâ çàïóùåííîãî ñöåíàðèÿ        */

    /*******************************************************************/

    var i, objArgs;

    objArgs = WScript.Arguments; //Ñîçäàåì îáúåêò WshArguments

    for (i=0; i<=objArgs.Count()-1; i++)

     WScript.Echo(objArgs(i)); //Âûâîäèì íà ýêðàí i-é àðãóìåíò

    /*************  Êîíåö *********************************************/

    Ñ ïîìîùüþ îáúåêòà

    WshArguments
    ìîæíî òàêæå âûäåëÿòü è îòäåëüíî îáðàáàòûâàòü àðãóìåíòû ñöåíàðèÿ, ó êîòîðûõ èìåþòñÿ èìåíà (íàïðèìåð,
    /Name:Andrey
    ) è áåçûìÿííûå àðãóìåíòû. ßñíî, ÷òî èñïîëüçîâàíèå èìåííûõ ïàðàìåòðîâ áîëåå óäîáíî, ò. ê. â ýòîì ñëó÷àå íåò íåîáõîäèìîñòè çàïîìèíàòü, â êàêîì ïîðÿäêå äîëæíû áûòü çàïèñàíû ïàðàìåòðû ïðè çàïóñêå òîãî èëè èíîãî ñöåíàðèÿ.

    Äëÿ äîñòóïà ê èìåííûì è áåçûìÿííûì àðãóìåíòàì èñïîëüçóþòñÿ ñîîòâåòñòâåííî äâà ñïåöèàëüíûõ ñâîéñòâà îáúåêòà

    WshArguments
    :
    Named
    è
    Unnamed
    .

    Ñâîéñòâî

    Named
    ñîäåðæèò ññûëêó íà êîëëåêöèþ
    WshNamed
    , ñâîéñòâî
    Unnamed
    — íà êîëëåêöèþ
    WshUnnamed
    .

    Òàêèì îáðàçîì, îáðàáàòûâàòü ïàðàìåòðû êîìàíäíîé ñòðîêè çàïóùåííîãî ñöåíàðèÿ ìîæíî òðåìÿ ñïîñîáàìè:

    ? ïðîñìàòðèâàòü ïîëíûé íàáîð âñåõ ïàðàìåòðîâ (êàê èìåííûõ, òàê è áåçûìÿííûõ) ñ ïîìîùüþ êîëëåêöèè

    WshArguments
    ;

    ? âûäåëèòü òîëüêî òå ïàðàìåòðû, ó êîòîðûõ åñòü èìåíà (èìåííûå ïàðàìåòðû) ñ ïîìîùüþ êîëëåêöèè

    WshNamed
    ;

    ? âûäåëèòü òîëüêî òå ïàðàìåòðû, ó êîòîðûõ íåò èìåí (áåçûìÿííûå ïàðàìåòðû) ñ ïîìîùüþ êîëëåêöèè

    WshUnnamed
    .

    Ó îáúåêòà

    WshArguments
    èìååòñÿ åùå îäèí ìåòîä
    ShowUsage
    . Ýòîò ìåòîä ñëóæèò äëÿ âûâîäà íà ýêðàí èíôîðìàöèè î çàïóùåííîì ñöåíàðèè (îïèñàíèå àðãóìåíòîâ êîìàíäíîé ñòðîêè, ïðèìåð çàïóñêà ñöåíàðèÿ è ò.ä.).  ñâîþ î÷åðåäü, ïîäîáíóþ èíôîðìàöèþ ìîæíî çàäàòü òîëüêî ïðè èñïîëüçîâàíèè WSH-ñöåíàðèåâ ñ ðàçìåòêîé XML; áîëåå ïîäðîáíî î ïðèìåíåíèè ìåòîäà
    ShowUsage
    èäåò ðå÷ü â ãëàâå 3 ïðè ðàññìîòðåíèè ýëåìåíòîâ
    <runtime>
    ,
    <description>
    ,
    <example>
    ,
    <named>
    è
    <unnamed>
    .

    Îáúåêò WshNamed

    Îáúåêò

    WshNamed
    ñîäåðæèò êîëëåêöèþ ïàðàìåòðîâ êîìàíäíîé ñòðîêè çàïóùåííîãî ñöåíàðèÿ, ó êîòîðûõ èìååòñÿ óíèêàëüíîå èìÿ (èìåííûå ïàðàìåòðû).  WSH 5.6 èìåííîé ïàðàìåòð âñåãäà íà÷èíàåòñÿ ñ ñèìâîëà "/", ïîñëå ÷åãî ïðèâîäèòñÿ èìÿ ýòîãî ïàðàìåòðà, çàòåì ñòàâèòñÿ äâîåòî÷èå ":" è ïèøåòñÿ çíà÷åíèå ïàðàìåòðà, íàïðèìåð:

    /Name:Andrey

     êà÷åñòâå çíà÷åíèÿ èìåííîãî ïàðàìåòðà ðàññìàòðèâàåòñÿ íàáîð ñèìâîëîâ, íà÷èíàþùèõñÿ ïîñëå äâîåòî÷èÿ è çàêàí÷èâàþùèõñÿ ïåðåä ïåðâûì âñòðåòèâøèìñÿ ïðîáåëîì. Äëÿ òîãî ÷òîáû çíà÷åíèåì ïàðàìåòðà êîìàíäíîé ñòðîêè áûëà ñòðîêà, ñîñòîÿùàÿ èç íåñêîëüêèõ ñëîâ, íåîáõîäèìî çàêëþ÷èòü ýòó ñòðîêó â êàâû÷êè. Íàïðèìåð:

    /Name:"Andrey Popov"

    Ñîçäàåòñÿ îáúåêò WshNamed ñ ïîìîùüþ ñâîéñòâà

    Named
    êîëëåêöèè
    WshArguments
    . Äëÿ òîãî ÷òîáû ïîëó÷èòü çíà÷åíèå îïðåäåëåííîãî àðãóìåíòà, åãî èìÿ èñïîëüçóåòñÿ â êà÷åñòâå èíäåêñà êîëëåêöèè.

    Çàìå÷àíèå

    Óçíàòü ÷èñëî èìåííûõ ïàðàìåòðîâ ìîæíî òîëüêî ñ ïîìîùüþ ñâîéñòâà

    Length
    êîëëåêöèè
    WshNamed
    ; ìåòîäà
    Count
    ó ýòîé êîëëåêöèè íåò.

    Íàïðèìåð, ïóñòü ñöåíàðèé MyScript.js çàïóùåí ñ äâóìÿ èìåííûìè ïàðàìåòðàìè:

    MyScript.js /User:Andrey /Computer:Server1

    Òîãäà âûâåñòè íà ýêðàí çíà÷åíèå ïàðàìåòðîâ Name è Computer ìîæíî äâóìÿ ñïîñîáàìè:

    var objNamedArgs;

    objNamedArgs=WScript.Arguments.Named;

    WScript.Echo("Èìÿ ïîëüçîâàòåëÿ: "+objNamedArgs.Item("User"));

    WScript.Echo("Èìÿ êîìïüþòåðà: "+objNamedArgs.Item ("Computer"));

    èëè ïðîñòî

    var objNamedArgs;

    objNamedArgs=WScript.Arguments.Named;

    WScript.Echo("Èìÿ ïîëüçîâàòåëÿ: "+objNamedArgs("User"));

    WScript.Echo("Èìÿ êîìïüþòåðà: "+objNamedArgs("Computer"));

    Îòìåòèì òàêæå, ÷òî çíà÷åíèåì èìåííîãî ïàðàìåòðà, êàê è áåçûìÿííîãî, ìîæåò ñëóæèòü öåëàÿ ñòðîêà, ñîñòîÿùàÿ èç íåñêîëüêèõ ëèòåðàëîâ è çàêëþ÷åííàÿ â êàâû÷êè, íàïðèìåð:

    MyScript.js /User:"Andrey Popov" /Computer:Server1

    Òîãäà â ðåçóëüòàòå âûïîëíåíèÿ â ñöåíàðèè MyScript.js ñëåäóþùåé ñòðîêè:

    WScript.Echo("Èìÿ ïîëüçîâàòåëÿ: "+ WScript.Arguments.Named("User"));

    íà ýêðàí áóäåò âûâåäåíî

    Èìÿ ïîëüçîâàòåëÿ: Andrey Popov

    Äëÿ òîãî ÷òîáû óçíàòü, áûë ëè óêàçàí ïðè çàïóñêå ñöåíàðèÿ òîò èëè èíîé èìåííîé ïàðàìåòð, èñïîëüçóåòñÿ ìåòîä

    Exists
    îáúåêòà
    WshNamed
    . Íàïðèìåð,

    if (WScript.Arguments.Named.Exists("User"))

     WScript.Echo("Èìÿ ïîëüçîâàòåëÿ: "+ WScript.Arguments.Named("User"));

    Ïðèìåðû, èëëþñòðèðóþùèå èñïîëüçîâàíèå îáúåêòà WshNamed, ïðèâåäåíû òàêæå â ãëàâå 2 (ñì. ëèñòèíãè 2.22 è 2.23).

    Îáúåêò WshUnnamed

    Â êîëëåêöèè

    WshUnnamed
    ñîäåðæàòñÿ ïàðàìåòðû êîìàíäíîé ñòðîêè çàïóùåííîãî ñöåíàðèÿ, ó êîòîðûõ íåò èìåíè (áåçûìÿííûå ïàðàìåòðû). Ñîçäàåòñÿ ýòîò îáúåêò ñ ïîìîùüþ ñâîéñòâà
    Unnamed
    êîëëåêöèè
    WshArguments
    . Äëÿ òîãî ÷òîáû ïîëó÷èòü çíà÷åíèå îïðåäåëåííîãî àðãóìåíòà, åãî íîìåð èñïîëüçóåòñÿ â êà÷åñòâå èíäåêñà êîëëåêöèè (íóìåðàöèÿ íà÷èíàåòñÿ ñ íóëÿ).

    Çàìå÷àíèå 

    Óçíàòü ÷èñëî áåçûìÿííûõ ïàðàìåòðîâ ìîæíî òîëüêî ñ ïîìîùüþ ñâîéñòâà

    Length
    êîëëåêöèè
    WshUnnamed
    ; ìåòîäà
    Count
    ó ýòîé êîëëåêöèè íåò.

    Íàïðèìåð, ñöåíàðèé MyScript.js çàïóùåí ñ äâóìÿ áåçûìÿííûìè ïàðàìåòðàìè:

    MyScript.js "Andrey Popov" Server1

    Òîãäà ïîñëå âûïîëíåíèÿ â ñöåíàðèè MyScript.js ëþáîãî èç ñëåäóþùèõ äâóõ áëîêîâ:

    var objUnnamedArgs;

    obUnnamedArgs=WScript.Arguments.Unnamed;

    WScript.Echo("Èìÿ ïîëüçîâàòåëÿ: "+objUnnamedArgs.Item(0));

    WScript.Echo("Èìÿ êîìïüþòåðà: "+objUnnamedArgs.Item(1));

    èëè

    var objUnnamedArgs;

    obUnnamedArgs=WScript.Arguments.Unnamed;

    WScript.Echo("Èìÿ ïîëüçîâàòåëÿ: "+objUnnamedArgs(0));

    WScript.Echo("Èìÿ êîìïüþòåðà: "+objUnnamedArgs(1));

    íà ýêðàí âûâåäóòñÿ ñëåäóþùèå ñòðîêè:

    Èìÿ ïîëüçîâàòåëÿ: Andrey Popov

    Èìÿ êîìïüþòåðà: Server1

    Ïðèìåðû, èëëþñòðèðóþùèå èñïîëüçîâàíèå îáúåêòà

    WshUnnamed
    , ïðèâåäåíû òàêæå â ãëàâå 2 (ñì. ëèñòèíãè 2.22 è 2.23).

    Îáúåêò WshEnvironment

    Îáúåêò

    WshEnvironment
    ïîçâîëÿåò ïîëó÷èòü äîñòóï ê êîëëåêöèè, ñîäåðæàùåé ïåðåìåííûå ñðåäû çàäàííîãî òèïà (ïåðåìåííûå ñðåäû îïåðàöèîííîé ñèñòåìû, ïåðåìåííûå ñðåäû ïîëüçîâàòåëÿ èëè ïåðåìåííûå ñðåäû òåêóùåãî êîìàíäíîãî îêíà). Ýòîò îáúåêò ìîæíî ñîçäàòü ñ ïîìîùüþ ñâîéñòâà
    Environment
    îáúåêòà
    WshShell
    èëè îäíîèìåííîãî åãî ìåòîäà:

    var WshShell=WScript.Createobject("WScript.Shell"),

     WshSysEnv=WshShell.Environment,

     WshUserEnv=WshShell.Environment("User");

    Îáúåêò

    WshEnvironment
    èìååò ñâîéñòâî
    Length
    , â êîòîðîì õðàíèòñÿ ÷èñëî ýëåìåíòîâ â êîëëåêöèè (êîëè÷åñòâî ïåðåìåííûõ ñðåäû), è ìåòîäû
    Count
    è
    Item
    . Äëÿ òîãî ÷òîáû ïîëó÷èòü çíà÷åíèå îïðåäåëåííîé ïåðåìåííîé ñðåäû, â êà÷åñòâå àðãóìåíòà ìåòîäà
    Item
    óêàçûâàåòñÿ èìÿ ýòîé ïåðåìåííîé â äâîéíûõ êàâû÷êàõ.  ñëåäóþùåì ïðèìåðå ìû âûâîäèì íà ýêðàí çíà÷åíèå ïåðåìåííîé ñðåäû
    PATH
    :

    var WshShell=WScript.CreateObject("WScript.Shell"), WshSysEnv=WshShell.Environment;

    WScript.Echo("Ñèñòåìíûé ïóòü:", WshSysEnv.Item("PATH"));

    Ìîæíî òàêæå ïðîñòî óêàçàòü èìÿ ïåðåìåííîé â êðóãëûõ ñêîáêàõ ïîñëå èìåíè îáúåêòà:

    WScript.Echo("Ñèñòåìíûé ïóòü:",WshSysEnv("PATH");

    Êðîìå ýòîãî, ó îáúåêòà WshEnvironment èìååòñÿ ìåòîä Remove(strName), êîòîðûé óäàëÿåò çàäàííóþ ïåðåìåííóþ ñðåäû. Íàïðèìåð, â ëèñòèíãå 1.6 ïðèâåäåí ñöåíàðèé, êîòîðûé óäàëÿåò äâå ïåðåìåííûå (

    EXAMPLE_1
    è
    EXAMPLE_2
    ) èç îêðóæåíèÿ ñðåäû ïîëüçîâàòåëÿ.

    Çàìå÷àíèå

    Åñëè â îêðóæåíèè ñðåäû ïîëüçîâàòåëÿ íåò ïåðåìåííûõ ñ èìåíàìè

    EXAMPLE_1
    è
    EXAMPLE_2
    , òî ïðè âûçîâå ìåòîäà
    Remove
    ïðîèçîéäåò îøèáêà.

    Ëèñòèíã 1.6. Óäàëåíèå ïåðåìåííûõ ñðåäû

    /*******************************************************************/

    /* Èìÿ: RemEnv.js                                                  */

    /* ßçûê: JScript                                                   */

    /* Îïèñàíèå: Óäàëåíèå äâóõ ïåðåìåííûõ ñðåäû                        */

    /*******************************************************************/

    //Ñîçäàåì îáúåêò WshShell

    var WshShell = WScript.CreateObject("WScript.Shell");

    //Ñîçäàåì îáúåêò WshEnvironment

    var WshUsrEnv = WshShell.Environment("User");

    //Óäàëÿåì ïåðåìåííûå ñðåäû

    WshUsrEnv.Remove("EXAMPLE_1");

    WshUsrEnv.Remove("EXAMPLE_2");

    /*************  Êîíåö *********************************************/

    Îáúåêò WshSpecialFolders

    Îáúåêò

    WshSpecialFolders
    îáåñïå÷èâàåò äîñòóï ê êîëëåêöèè, ñîäåðæàùåé ïóòè ê ñïåöèàëüíûì ïàïêàì Windows (íàïðèìåð, ê ðàáî÷åìó ñòîëó èëè ê ìåíþ Ïóñê (Start)); çàäàíèå ïóòåé ê òàêèì ïàïêàì ìîæåò áûòü íåîáõîäèìî, íàïðèìåð, äëÿ ñîçäàíèÿ íåïîñðåäñòâåííî èç ñöåíàðèÿ ÿðëûêîâ íà ðàáî÷åì ñòîëå.

    Â Windows 9õ ïîääåðæèâàþòñÿ ñëåäóþùèå èìåíà ñïåöèàëüíûõ ïàïîê:

    ? Desktop;

    ? Favorites;

    ? Fonts;

    ? MyDocuments;

    ? NetHood;

    ? PrintHood;

    ? Programs;

    ? Recent; 

    ? SendTo;

    ? StartMenu;

    ? Startup;

    ? Templates.

     Windows NT/2000/XP äîïîëíèòåëüíî ìîæíî ïîëó÷èòü äîñòóï åùå ê ÷åòûðåì ïàïêàì, êîòîðûå õðàíÿò äàííûå äëÿ âñåõ ïîëüçîâàòåëåé:

    ? AllUsersDesktop;

    ? AllUsersStartMenu;

    ? AllUsersPrograms;

    ? AllUsersStartup.

    Îáúåêò

    WshSpecialFolders
    ñîçäàåòñÿ c ïîìîùüþ ñâîéñòâà
    SpecialFolders
    îáúåêòà
    WshShell
    :

    var WshShell=WScript.CreateObject("WScript.Shell"),

     WshSpecFold=WshShell.SpecialFolders;

    Êàê è ïî÷òè âñå êîëëåêöèè WSH, îáúåêò

    WshSpecialFolders
    èìååò ñâîéñòâî
    Length
    è ìåòîäû
    Count
    è
    Item
    . Äîñòóï ê îòäåëüíîìó ýëåìåíòó ïðîèçâîäèòñÿ ëèáî ÷åðåç èìÿ ñîîòâåòñòâóþùåé ïàïêè, ëèáî ÷åðåç ÷èñëîâîé èíäåêñ (Ëèñòèíã 1.7).

    Ëèñòèíã 1.7. Îáðàáîòêà êîëëåêöèè
    WshSpecialFolders

    /*******************************************************************/

    /* Èìÿ: ShowSpecFold.js                                            */

    /* ßçûê: JScript                                                   */

    /* Îïèñàíèå: Âûâîä íà ýêðàí íàçâàíèé ñïåöèàëüíûõ ïàïîê Windows     */

    /*           (êîëëåêöèÿ WshSpecialFolders)                         */

    /*******************************************************************/

    var WshShell, WshFldrs, i;

    //Ñîçäàåì îáúåêò WshShell

    WshShell = WScript.CreateObject("Wscript.Shell");

    //Ñîçäàåì îáúåêò WshSpecialFolders

    WshFldrs = WshShell.SpecialFolders;

    WScript.Echo("Íåêîòîðûå ñïåöèàëüíûå ïàïêè...");

    //Âûâîäèì ïóòü ê ïàïêå Desktop

    WScript.Echo("Desktop="+ WshFldrs.item("Desktop"));

    //Âûâîäèì ïóòü ê ïàïêå Favorities

    WScript.Echo("Favorites="+ WshFldrs("Favorites"));

    //Âûâîäèì ïóòü ê ïàïêå Programs

    WScript.Echo("Programs="+ WshFldrs("Programs"));

    WScript.Echo("");

    WScript.Echo("Ñïèñîê âñåõ ñïåöèàëüíûõ ïàïîê...");

    for (i=0;i<= WshFldrs.Count()-1;i++){

     //Âûâîäèì íà ýêðàí i-é ýëåìåíò êîëëåêöèè WshFldrs

     WScript.Echo(WshFldrs(i));

    }

    /*************  Êîíåö *********************************************/

    Äðóãèå ïðèìåðû ðàáîòû ñî ñïåöèàëüíûìè ïàïêàìè Windows ïðèâåäåíû â ãëàâå 2 (ñì. ëèñòèíãè 2.39–2.42).

    Ðàáîòà ñ ñåòüþ è îáîëî÷êîé Windows

    Äëÿ ðàáîòû ñ ëîêàëüíîé ñåòüþ è îáîëî÷êîé Windows (ñïåöèàëüíûå ïàïêè, ïåðåìåííûå ñðåäû, ñèñòåìíûé ðååñòð) ïðåäíàçíà÷åíû ñîîòâåòñòâåííî îáúåêòû

    WshNetwork
    è
    WshShell
    .

    Îáúåêò WshNetwork

    Îáúåêò

    WshNetwork
    ïðåäíàçíà÷åí äëÿ ðàáîòû ñ ðåñóðñàìè ëîêàëüíîé ñåòè; ñ ïîìîùüþ ìåòîäîâ ýòîãî îáúåêòà ìîæíî ïîäêëþ÷àòü è îòêëþ÷àòü ñåòåâûå äèñêè è ïðèíòåðû.

    Îáúåêò

    WshNetwork
    ñîçäàåòñÿ ñëåäóþùèì îáðàçîì:

    var objNet=WScript.CreateObject("WScript.Network");

    Ñâîéñòâà äàííîãî îáúåêòà ïðèâåäåíû â òàáë. 1.5.


    Òàáëèöà 1.5. Ñâîéñòâà îáúåêòà

    WshNetwork

    Ñâîéñòâî Îïèñàíèå
    ComputerName
    Ñîäåðæèò èìÿ êîìïüþòåðà, íà êîòîðîì çàïóùåí ñöåíàðèé
    UserDomain
    Ñîäåðæèò èìÿ äîìåíà, â êîòîðîì çàðåãèñòðèðîâàëñÿ ïîëüçîâàòåëü
    UserName
    Ñîäåðæèò èìÿ ïîëüçîâàòåëÿ

    Ëèñòèíã 1.8. Ïðèìåð èñïîëüçîâàíèÿ îáúåêòà
    WshNetwork

    /*******************************************************************/

    /* Èìÿ: ShowNetwork.js                                             */

    /* ßçûê: JScript                                                   */

    /* Îïèñàíèå: Âûâîä íà ýêðàí ñåòåâîãî èìåíè êîìïüþòåðà è èìåíè      */

    /*           ïîëüçîâàòåëÿ                                          */

    /*******************************************************************/

    var objNet;

    //Ñîçäàåì îáúåêò WshNetwork

    objNet = WScript.CreateObject("WScript.Network");

    //Âûâîäèì íà ýêðàí ñâîéñòâà ComputerName è UserName

    WScript.Echo("Èìÿ ìàøèíû:",objNet.ComputerName);

    WScript.Echo("Èìÿ ïîëüçîâàòåëÿ:",objNet.UserName);

    /*************  Êîíåö *********************************************/


    Ìåòîäû îáúåêòà

    WshNetwork
    îïèñàíû â òàáë. 1.6.


    Òàáëèöà 1.6. Ìåòîäû îáúåêòà

    WshNetwork

    Ìåòîä Îïèñàíèå
    AddPrinterConnection(strLocalName, strRemoteName [ ,bUpdateProfile] [,strUser] [,strPassword])
    Ïîäêëþ÷àåò ëîêàëüíûé ïîðò êîìïüþòåðà ê ñåòåâîìó ïðèíòåðó
    Äëÿ Windows NT/2000/XP:
    AddWindowsPrinterConnection(strPrnPath)
    Äëÿ Windows 9x:
    AddWindowsPrinterConnection(strPrnPath, strDriverName[, strPort])
    Ðåãèñòðèðóåò ïðèíòåð â Windows è ïîäêëþ÷àåò åãî ê ñåòåâîìó ðåñóðñó.  îòëè÷èå îò
    AddPrinterConnection
    , ýòîò ìåòîä ïîçâîëÿåò ñîçäàòü ñâÿçü ñ ñåòåâûì ïðèíòåðîì áåç ÿâíîãî ïåðåíàïðàâëåíèÿ âûâîäà â ëîêàëüíûé ïîðò
    EnumNetworkDrives()
    Âîçâðàùàåò êîëëåêöèþ, â êîòîðîé õðàíÿòñÿ áóêâû è ñåòåâûå ïóòè êî âñåì ïîäêëþ÷åííûì ñåòåâûì äèñêàì
    EnumPrinterConnections()
    Âîçâðàùàåò êîëëåêöèþ, â êîòîðîé õðàíÿòñÿ äàííûå îáî âñåõ ïîäêëþ÷åííûõ ñåòåâûõ ïðèíòåðàõ
    MapNetworkDrive(strLocalName, strRemoteName, [bUpdateProfile], [strUser], [strPassword])
    Ïîäêëþ÷àåò ñåòåâîé ðåñóðñ
    strRemoteName
    ïîä ëîêàëüíûì èìåíåì äèñêà
    strLocalName
    RemoveNetworkDrive(strName, [bForce], [bUpdateProfile])
    Îòêëþ÷àåò ïîäêëþ÷åííûé ñåòåâîé äèñê
    RemovePrinterConnection(strName, [bForce], [bUpdateProfile])
    Îòêëþ÷àåò ïîäêëþ÷åííûé ñåòåâîé ïðèíòåð
    SetDefaultPrinter(strPrinterName)
    Äåëàåò çàäàííûé ñåòåâîé ïðèíòåð ïðèíòåðîì ïî óìîë÷àíèþ

    Îïèøåì ìåòîäû èç òàáë. 1.6 áîëåå ïîäðîáíî.

    Ìåòîä AddPrinterConnection

    Åñëè íåîáÿçàòåëüíûé ïàðàìåòð

    bUpdateProfile
    ðàâåí
    True
    , òî ñîçäàâàåìîå ñåòåâîå ïîäêëþ÷åíèå áóäåò ñîõðàíåíî â ïðîôèëå ïîëüçîâàòåëÿ.

    Ïàðàìåòðû

    strUser
    (èìÿ ïîëüçîâàòåëÿ) è
    strPassword
    (ïàðîëü) íóæíû â òîì ñëó÷àå, êîãäà âû ïîäêëþ÷àåòå ñåòåâîé ïðèíòåð îò èìåíè ïîëüçîâàòåëÿ, êîòîðîå îòëè÷àåòñÿ îò èìåíè òåêóùåãî ïîëüçîâàòåëÿ, çàðåãèñòðèðîâàííîãî â ñèñòåìå.

    Â ñëåäóþùåì ïðèìåðå ìåòîä

    AddPrinterConnection
    ïðèìåíÿåòñÿ äëÿ ïîäêëþ÷åíèÿ ïðèíòåðà ñ ñåòåâûì èìåíåì
    \\Server1\Epson
    ê ëîêàëüíîìó ïîðòó
    LPT1
    :

    var WshNetwork = CreateObject("WScript.Network");

    WshNetwork.AddPrinterConnection("LPT1", "\\Server1\Epson");

    Ìåòîä AddWindowsPrinterConnection

    Ïàðàìåòð

    strDriverName
    óêàçûâàåò èìÿ äðàéâåðà, íåîáõîäèìîãî äëÿ ïîäêëþ÷àåìîãî ïðèíòåðà. Åñëè ïðèíòåð ïîäêëþ÷àåòñÿ â îïåðàöèîííîé ñèñòåìå Windows 9õ, òî íóæíûé äðàéâåð óæå äîëæåí áûòü óñòàíîâëåí íà ýòîé ìàøèíå, èíà÷å âîçíèêíåò îøèáêà ïîäêëþ÷åíèÿ.  Windows NT/2000/XP ïàðàìåòð
    strDriverName
    èãíîðèðóåòñÿ.

    Ïàðàìåòð

    strPort
    çàäàåò â ÿâíîì âèäå ïîðò, âûâîä â êîòîðûé áóäåò ïåðåíàïðàâëåí íà ñåòåâîé ðåñóðñ (ïî óìîë÷àíèþ ýòî ïîðò
    LPT1
    ). Â Windows NT/2000/XP ïàðàìåòð
    strPort
    èãíîðèðóåòñÿ.

    Â ñëåäóþùåì ïðèìåðå ìåòîä

    AddWindowsPrinterConnection
    ïðèìåíÿåòñÿ äëÿ ïîäêëþ÷åíèÿ ñåòåâîãî ïðèíòåðà ê ëîêàëüíîìó ïîðòó
    LPT1
    (ïî óìîë÷àíèþ):

    var WshNetwork=CreateObject("WScript.Network");

    PrinterPath="\\printserv\DefaultPrinter";

    PrinterDriver="Lexmark Optra S 1650";

    WshNetwork.AddwindowsPrinterConnection(PrinterPath, PrinterDriver);

    Ìåòîä EnumNetworkDrives

    Ýëåìåíòàìè âîçâðàùàåìîé êîëëåêöèè ÿâëÿþòñÿ áóêâû, îáîçíà÷àþùèå èìåþùèåñÿ ñåòåâûå äèñêè è ñåòåâûå èìåíà ðåñóðñîâ, ê êîòîðûì ýòè äèñêè ïîäêëþ÷åíû. Ïåðâûì ýëåìåíòîì êîëëåêöèè ÿâëÿåòñÿ áóêâà, âòîðûì — ñåòåâîå èìÿ; ýòà ïîñëåäîâàòåëüíîñòü ñîõðàíÿåòñÿ äëÿ âñåõ ñåòåâûõ äèñêîâ â êîëëåêöèè.

     ñëåäóþùåì ïðèìåðå íà ýêðàí âûâîäÿòñÿ áóêâû, îáîçíà÷àþùèå âñå ñåòåâûå äèñêè è èìåíà ðåñóðñîâ, ê êîòîðûì îíè ïîäêëþ÷åíû (ëèñòèíã 1.9).

    Ëèñòèíã 1.9. Ïðèìåð èñïîëüçîâàíèÿ ìåòîäà
    EnumNetworkDrives

    /*******************************************************************/

    /* Èìÿ: ShowNetDrives.js                                           */

    /* ßçûê: JScript                                                   */

    /* Îïèñàíèå: Âûâîä íà ýêðàí áóêâ ñåòåâûõ äèñêîâ è èìåí             */

    /*           ñîîòâåòñòâóþùèõ ðåñóðñîâ                              */

    /*******************************************************************/

    var WshNetwork,oDrives,i;

    //Ñîçäàåì îáúåêò WshNetwork

    WshNetwork = WScript.CreateObject("WScript.Network");

    //Ñîçäàåì êîëëåêöèþ ñ èíôîðìàöèåé î ñåòåâûõ äèñêàõ

    oDrives = WshNetwork.EnumNetworkDrives();

    for (i=0; i<=oDrives.Count()-1; i++)

     WScript.Echo(oDrives.Item(i)); //Âûâîä i-ãî ýëåìåíòà êîëëåêöèè

    /*************  Êîíåö *********************************************/

    Ìåòîä EnumPrinterConnections

    Ýëåìåíòàìè âîçâðàùàåìîé êîëëåêöèè ÿâëÿþòñÿ íàçâàíèÿ ëîêàëüíûõ ïîðòîâ è ñåòåâûå èìåíà ïðèíòåðîâ, ñâÿçàííûõ ñ ýòèìè ïîðòàìè. Ñàìà êîëëåêöèÿ îðãàíèçîâàíà òàê æå, êàê è êîëëåêöèÿ, âîçâðàùàåìàÿ ìåòîäîì

    EnumNetworkDrives
    .

     ñëåäóþùåì ïðèìåðå íà ýêðàí âûâîäÿòñÿ íàçâàíèÿ âñåõ ïåðåíàçíà÷åííûõ ïîðòîâ è èìåíà ñåòåâûõ ðåñóðñîâ, ñ êîòîðûìè îíè ñâÿçàíû (ëèñòèíã 1.10).

    Ëèñòèíã 1.10. Ïðèìåð èñïîëüçîâàíèÿ ìåòîäà
    EnumPrinterConnections

    /*******************************************************************/

    /* Èìÿ: ShowNetPrn.js                                              */

    /* ßçûê: JScript                                                   */

    /* Îïèñàíèå: Âûâîä íà ýêðàí ïåðåíàçíà÷åííûõ ïîðòîâ è èìåí          */

    /*           ñîîòâåòñòâóþùèõ ðåñóðñîâ                              */

    /*******************************************************************/

    //Ñîçäàåì îáúåêò WshNetwork

    var WshNetwork = WScript.CreateObject("WScript.Network");

    //Ñîçäàåì êîëëåêöèþ ñ èíôîðìàöèåé î ïîäêëþ÷åííûõ ïðèíòåðàõ

    var oPrinters = WshNetwork.EnumPrinterConnections();

    for (i=0; i<=oPrinters.Count()-1; i++)

     WScript.Echo(oPrinters.Item(i)); //Âûâîä i-ãî ýëåìåíòà êîëëåêöèè

    /*************  Êîíåö *********************************************/
     

    Ìåòîä MapNetworkDrive

    Åñëè íåîáÿçàòåëüíûé ïàðàìåòð

    bUpdateProfile
    ðàâåí
    True
    , òî ñîçäàâàåìîå ñåòåâîå ïîäêëþ÷åíèå áóäåò ñîõðàíåíî â ïðîôèëå ïîëüçîâàòåëÿ.

    Ïàðàìåòðû

    strUser
    (èìÿ ïîëüçîâàòåëÿ) è
    strPassword
    (ïàðîëü) íóæíû â òîì ñëó÷àå, êîãäà âû ïîäêëþ÷àåòå ñåòåâîé äèñê îò èìåíè ïîëüçîâàòåëÿ, êîòîðîå îòëè÷àåòñÿ îò èìåíè òåêóùåãî ïîëüçîâàòåëÿ, çàðåãèñòðèðîâàííîãî â ñèñòåìå.

    Â ñëåäóþùåì ïðèìåðå äèñê "

    z
    " ïîäêëþ÷àåòñÿ ê ñåòåâîìó ðåñóðñó \\Server1\Programs:

    var WshNetwork = WScript.CreateObject("WScript.Network");

    WshNetwork.MapNetworkDrive("Z:","\\Server1\Programs");

    Ìåòîä RemoveNetworkDrive

     êà÷åñòâå ïàðàìåòðà

    strName
    ìîæåò áûòü óêàçàíî ëèáî ëîêàëüíîå èìÿ (áóêâà ñåòåâîãî äèñêà), ëèáî ñåòåâîå èìÿ (èìÿ ïîäêëþ÷åííîãî ñåòåâîãî ðåñóðñà); ýòî çàâèñèò îò òîãî, êàêèì îáðàçîì îñóùåñòâëÿëîñü ïîäêëþ÷åíèå. Åñëè ñåòåâîìó ðåñóðñó ñîïîñòàâëåíà áóêâà ëîêàëüíîãî äèñêà, òî ïàðàìåòð
    strName
    äîëæåí áûòü ëîêàëüíûì èìåíåì. Åñëè ñåòåâîìó ðåñóðñó íå ñîïîñòàâëåíà íèêàêàÿ áóêâà, òî ïàðàìåòð
    strName
    äîëæåí áûòü ñåòåâûì èìåíåì.

    Åñëè íåîáÿçàòåëüíûé ïàðàìåòð

    bForce
    ðàâåí
    True
    , òî îòêëþ÷åíèå ñåòåâîãî ðåñóðñà áóäåò ïðîèçâåäåíî âíå çàâèñèìîñòè îò òîãî, èñïîëüçóåòñÿ ýòîò ðåñóðñ â íàñòîÿùåå âðåìÿ èëè íåò.

    Åñëè íåîáÿçàòåëüíûé ïàðàìåòð

    bUpdateProfile
    ðàâåí
    True
    , òî îòêëþ÷àåìîå ñåòåâîå ïîäêëþ÷åíèå áóäåò óäàëåíî èç ïðîôèëÿ ïîëüçîâàòåëÿ.

     ñëåäóþùåì ïðèìåðå ïðîèçâîäèòñÿ ïîäêëþ÷åíèå äèñêà "z" ê ñåòåâîìó ðåñóðñó, à çàòåì îòêëþ÷åíèå ýòîãî ðåñóðñà (ëèñòèíã 1.11).

    Ëèñòèíã 1.11. Ïðèìåð ïîäêëþ÷åíèÿ è îòêëþ÷åíèÿ ñåòåâîãî äèñêà

    /*******************************************************************/

    /* Èìÿ: MapDrive.js                                                */

    /* ßçûê: JScript                                                   */

    /* Îïèñàíèå: Ïîäêëþ÷åíèå/îòêëþ÷åíèå ñåòåâîãî ðåñóðñà               */

    /*******************************************************************/

    //Ñîçäàåì îáúåêò WshNetwork

    var WshNetwork = WScript.CreateObject("WScript.Network");

    //Ïîäêëþ÷àåì ñåòåâîé äèñê Z:\ ê \\Server1\Programs

    WshNetwork.MapNetworkDrive("Z:","\\Server1\Programs");

    //Îòêëþ÷àåì ñåòåâîé äèñê Z:\

    WshNetwork.RemoveNetworkDrive("Z:");

    /*************  Êîíåö *********************************************/

    Ìåòîä RemovePrinterConnection

     êà÷åñòâå ïàðàìåòðà

    strName
    ìîæåò áûòü óêàçàíî ëèáî ëîêàëüíîå èìÿ (íàçâàíèå ïîðòà), ëèáî ñåòåâîå èìÿ (èìÿ ïîäêëþ÷åííîãî ñåòåâîãî ïðèíòåðà); ýòî çàâèñèò îò òîãî, êàêèì îáðàçîì îñóùåñòâëÿëîñü ïîäêëþ÷åíèå. Åñëè ñåòåâîìó ðåñóðñó ÿâíûì îáðàçîì ñîïîñòàâëåí ëîêàëüíûé ïîðò (íàïðèìåð, LPT1), òî ïàðàìåòð
    strName
    äîëæåí áûòü ëîêàëüíûì èìåíåì. Åñëè ñåòåâîìó ïðèíòåðó íå ñîïîñòàâëåí ëîêàëüíûé ïîðò, òî ïàðàìåòð
    strName
    äîëæåí áûòü ñåòåâûì èìåíåì.

    Ïàðàìåòðû

    bForce
    è
    bUpdateProfile
    â ýòîì ìåòîäå èìåþò òî æå çíà÷åíèå, ÷òî è îäíîèì¸ííûå ïàðàìåòðû â ìåòîäå
    RemoveNetworkDrive
    .

     ñëåäóþùåì ïðèìåðå îòêëþ÷àåòñÿ ñåòåâîé ïðèíòåð, êîòîðûé áûë íàçíà÷åí íà ïîðò

    LPT1
    :

    var WshNetwork = WScript.CreateObject("WScript.Network");

    WshNetwork.RemovePrinterConnection("LPT1:");

    Ìåòîä SetDefaultPrinter

    Ïàðàìåòð

    strName
    çàäàåò ñåòåâîå èìÿ ïðèíòåðà, êîòîðûé äîëæåí áóäåò èñïîëüçîâàòüñÿ â ñèñòåìå ïî óìîë÷àíèþ.

    Â ñëåäóþùåì ïðèìåðå ñ ïîìîùüþ ìåòîäà

    AddPrinterConnection
    ê ïîðòó LPT1: ïîäêëþ÷àåòñÿ ñåòåâîé ïðèíòåð \\Server1\Epson, êîòîðûé çàòåì óñòàíàâëèâàåòñÿ ïðèíòåðîì ïî óìîë÷àíèþ (ëèñòèíã 1.12).

    Ëèñòèíã 1.12. Ïðèìåð èñïîëüçîâàíèÿ ìåòîäà
    SetDefaultPrinter

    /*******************************************************************/

    /* Èìÿ: DefPrn.js                                                  */

    /* ßçûê: JScript                                                   */

    /* Îïèñàíèå: Óñòàíîâêà ïðèíòåðà ïî óìîë÷àíèþ                       */

    /*******************************************************************/

    //Ñîçäàåì îáúåêò WshNetwork

    var WshNetwork = WScript.CreateObject("WScript.Network");

    //Ïîäêëþ÷àåì ê LPT1 ñåòåâîé ïðèíòåð \\Server1\Epson

    WshNetwork.AddPrinterConnection("LPT1:","\\Server1\Epson");

    //Óñòàíàâëèâàåì ïðèíòåð ïî óìîë÷àíèþ

    WshNetwork.SetDefaultPrinter("\\Server1\Epson");

    /*************  Êîíåö *********************************************/

    Äðóãèå ïðèìåðû, èëëþñòðèðóþùèå èñïîëüçîâàíèå îáúåêòà

    WshNetwork
    , ïðèâåäåíû â ãëàâå 2 (ñì. ëèñòèíãè 2.47–2.52).

    Îáúåêò WshShell

    Ñ ïîìîùüþ îáúåêòà

    WshShell
    ìîæíî çàïóñêàòü íîâûé ïðîöåññ, ñîçäàâàòü ÿðëûêè, ðàáîòàòü ñ ñèñòåìíûì ðååñòðîì, ïîëó÷àòü äîñòóï ê ïåðåìåííûì ñðåäû è ñïåöèàëüíûì ïàïêàì Windows. Ñîçäàåòñÿ ýòîò îáúåêò ñëåäóþùèì îáðàçîì:

    var WshShell=WScript.CreateObject("WScript.Shell");

    Îáúåêò

    WshShell
    èìååò òðè ñâîéñòâà, êîòîðûå ïðèâåäåíû â òàáë. 1.7.


    Òàáëèöà 1.7. Ñâîéñòâà îáúåêòà

    WshShell

    Ñâîéñòâî Îïèñàíèå
    CurrentDirectory
    Çäåñü õðàíèòñÿ ïîëíûé ïóòü ê òåêóùåìó êàòàëîãó (ê êàòàëîãó, èç êîòîðîãî áûë çàïóùåí ñöåíàðèé)
    Environment
    Ñîäåðæèò îáúåêò
    WshEnvironment
    , êîòîðûé îáåñïå÷èâàåò äîñòóï ê ïåðåìåííûì ñðåäû îïåðàöèîííîé ñèñòåìû äëÿ Windows NT/2000/XP èëè ê ïåðåìåííûì ñðåäû òåêóùåãî êîìàíäíîãî îêíà äëÿ Windows 9õ
    SpecialFolders
    Ñîäåðæèò îáúåêò
    WshSpecialFolders
    äëÿ äîñòóïà ê ñïåöèàëüíûì ïàïêàì Windows (ðàáî÷èé ñòîë, ìåíþ Ïóñê (Start) è ò.ä.)

    Îïèøåì òåïåðü ìåòîäû, èìåþùèåñÿ ó îáúåêòà

    WshShell
    (òàáë. 1.8).


    Òàáëèöà 1.8. Ìåòîäû îáúåêòà

    WshShell

    Ìåòîä Îïèñàíèå
    AppActivate(title)
    Àêòèâèçèðóåò çàäàííîå ïàðàìåòðîì
    title
    îêíî ïðèëîæåíèÿ. Ñòðîêà
    title
    çàäàåò íàçâàíèå îêíà (íàïðèìåð, "calc" èëè "notepad") èëè èäåíòèôèêàòîð ïðîöåññà (ProcessID, PID)
    CreateShortcut(strPathname)
    Ñîçäàåò îáúåêò
    WshShortcut
    äëÿ ñâÿçè ñ ÿðëûêîì Windows (ðàñøèðåíèå lnk) èëè îáúåêò
    WshUrlShortcut
    äëÿ ñâÿçè ñ ñåòåâûì ÿðëûêîì (ðàñøèðåíèå url). Ïàðàìåòð
    strPathname
    çàäàåò ïîëíûé ïóòü ê ñîçäàâàåìîìó èëè èçìåíÿåìîìó ÿðëûêó
    Environment(strType)
    Âîçâðàùàåò îáúåêò
    WshEnvironment
    , ñîäåðæàùèé ïåðåìåííûå ñðåäû çàäàííîãî âèäà
    Exec(strCommand)
    Ñîçäàåò íîâûé äî÷åðíèé ïðîöåññ, êîòîðûé çàïóñêàåò êîíñîëüíîå ïðèëîæåíèå, çàäàííîå ïàðàìåòðîì
    strCommand
    .
    Â ðåçóëüòàòå âîçâðàùàåòñÿ îáúåêò
    WshScriptExec
    , ïîçâîëÿþùèé êîíòðîëèðîâàòü õîä âûïîëíåíèÿ çàïóùåííîãî ïðèëîæåíèÿ è îáåñïå÷èâàþùèé äîñòóï ê ïîòîêàì
    StdIn
    ,
    StdOut
    è
    StdErr
    ýòîãî ïðèëîæåíèÿ
    ExpandEnvironmentStrings(strString)
    Âîçâðàùàåò çíà÷åíèå ïåðåìåííîé ñðåäû òåêóùåãî êîìàíäíîãî îêíà, çàäàííîé ñòðîêîé
    strString
    (èìÿ ïåðåìåííîé äîëæíî áûòü îêðóæåíî çíàêàìè "%")
    LogEvent(intType, strMessage [ ,strTarget])
    Ïðîòîêîëèðóåò ñîáûòèÿ â æóðíàëå Windows NT/2000/XP èëè â ôàéëå WSH.log. Öåëî÷èñëåííûé ïàðàìåòð
    intÒóðå
    îïðåäåëÿåò òèï ñîîáùåíèÿ, ñòðîêà
    strMessage
    — òåêñò ñîîáùåíèÿ. Ïàðàìåòð
    strTarget
    ìîæåò çàäàâàòüñÿ òîëüêî â Windows NT/2000/XP, îí îïðåäåëÿåò íàçâàíèå ñèñòåìû, â êîòîðîé ïðîòîêîëèðóþòñÿ ñîáûòèÿ (ïî óìîë÷àíèþ ýòî ëîêàëüíàÿ ñèñòåìà). Ìåòîä
    LogEvent
    âîçâðàùàåò
    true
    , åñëè ñîáûòèå çàïèñàíî óñïåøíî è
    false
    â ïðîòèâíîì ñëó÷àå
    Popup(strÒåõt, [nSecToWait] , [strTitle], [nType])
    Âûâîäèò íà ýêðàí èíôîðìàöèîííîå îêíî ñ ñîîáùåíèåì, çàäàííûì ïàðàìåòðîì
    strText
    .
    Ïàðàìåòð
    nSecToWait
    çàäàåò êîëè÷åñòâî ñåêóíä, ïî èñòå÷åíèè êîòîðûõ îêíî áóäåò àâòîìàòè÷åñêè çàêðûòî, ïàðàìåòð
    strTitle
    îïðåäåëÿåò çàãîëîâîê îêíà, ïàðàìåòð
    nType
    óêàçûâàåò òèï êíîïîê è çíà÷êà äëÿ îêíà
    RegDelete(strName)
    Óäàëÿåò èç ñèñòåìíîãî ðååñòðà çàäàííûé ïàðàìåòð èëè ðàçäåë öåëèêîì
    RegRead(strName)
    Âîçâðàùàåò çíà÷åíèå ïàðàìåòðà ðååñòðà èëè çíà÷åíèå ïî óìîë÷àíèþ äëÿ ðàçäåëà ðååñòðà
    RegWrite(strName, anyValue [,strType])
    Çàïèñûâàåò â ðååñòð çíà÷åíèå çàäàííîãî ïàðàìåòðà èëè çíà÷åíèå ïî óìîë÷àíèþ äëÿ ðàçäåëà
    Run(strCommand, [intWindowStyle], [bWaitOnReturn])
    Ñîçäàåò íîâûé íåçàâèñèìûé ïðîöåññ, êîòîðûé çàïóñêàåò ïðèëîæåíèå, çàäàííîå ïàðàìåòðîì
    strCommand
    SendKeys(string)
    Ïîñûëàåò îäíî èëè íåñêîëüêî íàæàòèé êëàâèø â àêòèâíîå îêíî (ýôôåêò òîò æå, êàê åñëè áû âû íàæèìàëè ýòè êëàâèøè íà êëàâèàòóðå)
    SpecialFolders(strSpecFolder)
    Âîçâðàùàåò ñòðîêó, ñîäåðæàùóþ ïóòü ê ñïåöèàëüíîé ïàïêå Windows, çàäàííîé ïàðàìåòðîì
    strSpecFolder

    Ðàññìîòðèì ìåòîäû, ïðèâåäåííûå â òàáë. 1.8, áîëåå ïîäðîáíî.

    Ìåòîä ÀððActivate

    Ìåòîä

    AppActivate
    àêòèâèçèðóåò óæå çàïóùåííîå óêàçàííîå ïðèëîæåíèå (óñòàíàâëèâàåò íà íåãî ôîêóñ), íî íå ïðîèçâîäèò íèêàêèõ äåéñòâèé ïî èçìåíåíèþ ðàçìåðîâ åãî îêíà. Äëÿ òîãî ÷òîáû ïåðâîíà÷àëüíî çàïóñòèòü íóæíîå ïðèëîæåíèå è îïðåäåëèòü âèä åãî îêíà, ñëåäóåò èñïîëüçîâàòü ìåòîä
    Run
    îáúåêòà
    WshShell
    . Äëÿ òîãî ÷òîáû îïðåäåëèòü, êàêîå èìåííî ïðèëîæåíèå íåîáõîäèìî àêòèâèçèðîâàòü, ñòðîêà
    title
    ñðàâíèâàåòñÿ ïî î÷åðåäè ñ íàçâàíèÿìè îêîí âñåõ çàïóùåííûõ ïðèëîæåíèé. Åñëè íå íàéäåíî íè îäíîãî òî÷íîãî ñîâïàäåíèÿ, áóäåò ïðîèçâîäèòüñÿ ïîèñê òîãî ïðèëîæåíèÿ, íàçâàíèå îêíà êîòîðîãî íà÷èíàåòñÿ ñî ñòðîêè
    title
    . Åñëè è â ýòîì ñëó÷àå íå áóäåò íàéäåíî íè îäíîãî ïîäõîäÿùåãî ïðèëîæåíèÿ, òî áóäåò âåñòèñü ïîèñê ïðèëîæåíèÿ, çàãîëîâîê êîòîðîãî çàêàí÷èâàåòñÿ íà ýòó ñòðîêó. Åñëè áóäåò íàéäåíî íåñêîëüêî ïîäõîäÿùèõ îêîí, òî ïðîèçîéäåò àêòèâèçàöèÿ îäíîãî èç íèõ (îêíî âûáèðàåòñÿ ïðîèçâîëüíî).

     êà÷åñòâå ïðèìåðà èñïîëüçîâàíèÿ ìåòîäà

    AppActivate
    â ëèñòèíãå 1.13 ïðèâåäåí ñöåíàðèé RunCalc.js, êîòîðûé çàïóñêàåò ñòàíäàðòíûé êàëüêóëÿòîð Windows è âûïîëíÿåò â íåì íåñêîëüêî ïðîñòûõ àðèôìåòè÷åñêèõ äåéñòâèé (äëÿ ýòîãî èñïîëüçóåòñÿ ìåòîä
    SendKeys
    ).

    Ëèñòèíã 1.13. Ñöåíàðèé RunCalc.js

    /*****************************************************************/

    /* Èìÿ: RunCalc.js                                               */

    /* ßçûê: JScript                                                 */

    /* Îïèñàíèå: Àêòèâèçàöèÿ ïðèëîæåíèÿ ñ ïîìîùüþ èìåíè îêíà         */

    /*****************************************************************/

    //Ñîçäàåì îáúåêò WshShell

    var WshShell = WScript.CreateObject("WScript.Shell");

    //Çàïóñêàåì Êàëüêóëÿòîð

    WshShell.Run("calc");

    //Ïðèîñòàíàâëèâàåì ñöåíàðèé íà 0,1 ñåêóíäû

    WScript.Sleep(100);

    //Àêòèâèçèðóåì Êàëüêóëÿòîð

    WshShell.AppActivate("Calculator");

    //Ïðèîñòàíîâêà ñöåíàðèÿ íà 0,1 ñåêóíäû

    WScript.Sleep(100);

    //Ïîñûëàåì íàæàòèÿ êëàâèø â Êàëüêóëÿòîð

    WshShell.SendKeys("1{+}");

    WScript.Sleep(500);

    WshShell.SendKeys("2");

    WScript.Sleep(500);

    WshShell.SendKeys("~");

    WScript.Sleep(2500);

    /*************  Êîíåö *********************************************/

    Â ãëàâå 2 ïðèâåäåíû äðóãèå ïðèìåðû èñïîëüçîâàíèÿ ìåòîäà

    AppActivate
    (ñì. ëèñòèíãè 2.31 è 2.32).

    Ìåòîä CreateShortcut

    Ýòîò ìåòîä ïîçâîëÿåò ñîçäàòü íîâûé èëè îòêðûòü óæå ñóùåñòâóþùèé ÿðëûê äëÿ èçìåíåíèÿ åãî ñâîéñòâ. 

    Â ëèñòèíãå 1.14 ïðèâåäåí ïðèìåð ñöåíàðèÿ, â êîòîðîì ñîçäàþòñÿ äâà ÿðëûêà — íà ñàì âûïîëíÿåìûé ñöåíàðèé (îáúåêò

    oShellLink
    è íà ñåòåâîé ðåñóðñ (
    oUrlLink
    ).

    Ëèñòèíã 1.14. Ïðèìåð èñïîëüçîâàíèÿ ìåòîäà
    CreateShortcut

    /*****************************************************************/

    /* Èìÿ: MakeShortcuts.js                                         */

    /* ßçûê: JScript                                                 */

    /* Îïèñàíèå: Ñîçäàíèå ÿðëûêîâ èç ñöåíàðèÿ                        */

    /*****************************************************************/

    var WshShell,oShellLink,oUrlLink;

    //Ñîçäàåì îáúåêò WshShell

    WshShell=WScript.CreateObject("WScript.Shell");

    //Ñîçäàåì ÿðëûê íà ôàéë

    oShellLink=WshShell.CreateShortcut("Current Script.lnk");

    //Óñòàíàâëèâàåì ïóòü ê ôàéëó

    oShellLink.TargetPath=WScript.ScriptFullName;

    //Ñîõðàíÿåì ÿðëûê

    oShellLink.Save();

    //Ñîçäàåì ÿðëûê íà ñåòåâîé ðåñóðñ

    oUrlLink = WshShell.CreateShortcut("Microsoft Web Site.URL");

    //Óñòàíàâëèâàåì URL

    oUrlLink.TargetPath = "http://www.microsoft.com";

    //Ñîõðàíÿåì ÿðëûê

    oUrlLink.Save();

    /*************  Êîíåö *********************************************/

    Ïðèìåðû ðàáîòû ñ ÿðëûêàìè ïðèâåäåíû â ëèñòèíãàõ 1.19–1.24, 2.43 è 2.44.

    Ìåòîä Environment

    Ïàðàìåòð

    strType
    çàäàåò âèä ïåðåìåííûõ ñðåäû, êîòîðûå áóäóò çàïèñàíû â êîëëåêöèè
    WshEnvironment
    ; âîçìîæíûìè çíà÷åíèÿìè ýòîãî ïàðàìåòðà ÿâëÿþòñÿ "System" (ïåðåìåííûå ñðåäû îïåðàöèîííîé ñèñòåìû), "User" (ïåðåìåííûå ñðåäû ïîëüçîâàòåëÿ), "Volatile" (âðåìåííûå ïåðåìåííûå) èëè "Process" (ïåðåìåííûå ñðåäû òåêóùåãî êîìàíäíîãî îêíà).

    Çàìå÷àíèå 

    Äëÿ Windows 9õ åäèíñòâåííûì äîïóñòèìûì çíà÷åíèåì ïàðàìåòðà

    strType
    ÿâëÿåòñÿ "Process".

     ñëåäóþùåì ïðèìåðå ìû ðàñïå÷àòûâàåì ÷èñëî ïðîöåññîðîâ, èìåþùèõñÿ â êîìïüþòåðå ñ îïåðàöèîííîé ñèñòåìîé Windows NT/2000/XP (ïåðåìåííàÿ

    NUMBER_OF_PROCESSORS
    ), è ïóòü ê êàòàëîãó Windows (ëèñòèíã 1.15).

    Ëèñòèíã 1.15. Ïå÷àòü çíà÷åíèé ïåðåìåííûõ ñðåäû (îáúåêò
    WshShell.Environment
    )

    /*****************************************************************/

    /* Èìÿ: ShowEnvir.js                                             */

    /* ßçûê: JScript                                                 */

    /* Îïèñàíèå: Ïîëó÷åíèå çíà÷åíèé íåêîòîðûõ ïåðåìåííûõ ñðåäû       */

    /*****************************************************************/

    var WshShell,WshSysEnv;

    //Ñîçäàåì îáúåêò WshShell

    WshShell = WScript.CreateObject("WScript.Shell");

    //Ñîçäàíèå êîëëåêöèè WshEnvironment

    WshSysEnv = WshShell.Environment("SYSTEM");

    WScript.Echo(WshSysEnv("NUMBER_OF_PROCESSORS"));

    WScript.Echo(WshShell.Environment.Item("WINDIR"));

    /*************  Êîíåö *********************************************/

    Ìåòîä ExpandEnvironmentString

    Â ñëåäóþùåì ïðèìåðå íà ýêðàí âûâîäèòñÿ ïóòü ê êàòàëîãó Windows (ëèñòèíã 1.16).

    Ëèñòèíã 1.16. Ïå÷àòü çíà÷åíèé ïåðåìåííûõ ñðåäû (
    ExpandEnvironmertStrings
    )

    /*****************************************************************/

    /* Èìÿ: ExpEnvStr.js                                             */

    /* ßçûê: JScript                                                 */

    /* Êîäèðîâêà: Windows                                            */

    /* Îïèñàíèå: Ïîëó÷åíèå çíà÷åíèé ïåðåìåííûé ñðåäû  ñ ïîìîùüþ      */

    /*           ìåòîäà ExpandEnvironmentString                      */

    /*****************************************************************/

    var WS = WScript.CreateObject("WScript.Shell");

    WScript.Echo("Êàòàëîã Windows:"+WS.ExpandEnvironmentStrings("%WinDir%"));

    /*************  Êîíåö *********************************************/

    Ìåòîä LogEvent

    Â Windows NT/2000/XP ñîáûòèÿ çàïèñûâàþòñÿ â ñèñòåìíîì æóðíàëå, à â Windows 9õ — â ôàéëå WSH.log, ðàñïîëîæåííîì â êàòàëîãå ïîëüçîâàòåëåé Windows. Çàïèñü â WSH.log áóäåò ñîäåðæàòü âðåìÿ ñîáûòèÿ, åãî òèï è òåêñò. Òèïû ñîîáùåíèé îïèñàíû â òàáë. 1.9.


    Òàáëèöà 1.9. Òèïû ñîîáùåíèé (ïàðàìåòð

    intType
    )

    Êîä Çíà÷åíèå Êîä Çíà÷åíèå
    0
    SUCCESS
    4
    INFORMATION
    1
    ERROR
    8
    AUDIT_SUCCESS
    2
    WARNING
    16
    AUDIT_FAILURE

    Â ñëåäóþùåì ïðèìåðå ïðîèçâîäèòñÿ ïðîòîêîëèðîâàíèå ðàáîòû ñöåíàðèÿ ðåãèñòðàöèè (çäåñü ïðåäïîëàãàåòñÿ, ÷òî åñëè ýòîò ñöåíàðèé îòðàáîòàë óñïåøíî, òî ôóíêöèÿ

    RunLoginScript
    âîçâðàùàåò true, â ïðîòèâíîì ñëó÷àå —
    false
    ):

    var WshShell = WScript.CreateObject("WScript.Shell");

    rc = RunLoginScript();

    if (rc) WshShell.LogEvent(0,"Logon Script Completed Successfully");

    else WshShell.LogEvent(1,"Logon Script failed");

    Ìåòîä Popup

    Åñëè â ìåòîäå íå çàäàí ïàðàìåòð

    strTitle
    , òî ïî óìîë÷àíèþ çàãîëîâêîì îêíà áóäåò "Windows Script Host."

    Ïàðàìåòð

    nType
    ìîæåò ïðèíèìàòü òå æå çíà÷åíèÿ, ÷òî è â ôóíêöèè
    MessageBox
    èç Microsoft Win32 API.  òàáë. 1.10 îïèñàíû íåêîòîðûå âîçìîæíûå çíà÷åíèÿ ïàðàìåòðà nType è èõ ñìûñë (ïîëíûé ñïèñîê çíà÷åíèé ýòîãî ïàðàìåòðà ìîæíî ïîñìîòðåòü â îïèñàíèè ôóíêöèè MessageBox â äîêóìåíòàöèè ïî ôóíêöèÿì Windows API).


    Òàáëèöà 1.10. Òèïû êíîïîê è èêîíîê äëÿ ìåòîäà

    Popup

    Çíà÷åíèå
    nType
    Êîíñòàíòà Visual Basic Îïèñàíèå
    0
    vbOkOnly
    Âûâîäèòñÿ êíîïêà
    OK
    1
    vbOkCancel
    Âûâîäÿòñÿ êíîïêè
    OK
    è
    Îòìåíà
    (Cancel)
    2
    vbAbortRetryIgnore
    Âûâîäÿòñÿ êíîïêè Ñòîï (Abort), Ïîâòîð (Retry) è Ïðîïóñòèòü (Ignore)
    3
    vbYesNoCancel
    Âûâîäÿòñÿ êíîïêè Äà (Yes), Íåò (No) è Îòìåíà (Cancel)
    4
    vbYesNo
    Âûâîäÿòñÿ êíîïêè Äà (Yes) è Íåò (No)
    5
    vbRetryCancel
    Âûâîäÿòñÿ êíîïêè Ïîâòîð (Retry) è Îòìåíà (Cancel)
    16
    vbCritical
    Âûâîäèòñÿ çíà÷îê Stop Mark
    32
    vbQuestion
    Âûâîäèòñÿ çíà÷îê Question Mark
    48
    vbExclamation
    Âûâîäèòñÿ çíà÷îê Exclamation Mark
    64
    vbInformation
    Âûâîäèòñÿ çíà÷îê Information Mark

    Çàìå÷àíèå

    Â ñöåíàðèÿõ, íàïèñàííûõ íà ÿçûêå VBScript, ìîæíî íåïîñðåäñòâåííî èñïîëüçîâàòü èìåíîâàííûå êîíñòàíòû òèïà

    vbOkCancel
    áåç ïðåäâàðèòåëüíîãî èõ îáúÿâëåíèÿ. Äëÿ òîãî ÷òîáû èñïîëüçîâàòü òàêèå êîíñòàíòû â JScript-ñöåíàðèÿõ, èõ íóæíî ïðåäâàðèòåëüíî îáúÿâèòü êàê ïåðåìåííûå è ïðèñâîèòü íóæíûå çíà÷åíèÿ (íàïðèìåð,
    var vbOkCancel=1;
    ). Åñòåñòâåííî, â ëþáûõ ñöåíàðèÿõ âìåñòî èìåí êîíñòàíò ìîæíî èñïîëüçîâàòü èõ ÷èñëîâûå çíà÷åíèÿ.

    Â ìåòîäå

    Popup
    ìîæíî êîìáèíèðîâàòü çíà÷åíèÿ ïàðàìåòðà, ïðèâåäåííûå â òàáë. 1.10. Íàïðèìåð, â ðåçóëüòàòå âûïîëíåíèÿ ñëåäóþùåãî ñöåíàðèÿ:

    var WshShell = WScript.CreateObject("WScript.Shell");

    WshShell.Popup("Êîïèðîâàíèå çàâåðøåíî óñïåøíî", 5, "Óðà",65);

    íà ýêðàí áóäåò âûâåäåíî èíôîðìàöèîííîå îêíî, ïîêàçàííîå íà ðèñ. 1.11, êîòîðîå àâòîìàòè÷åñêè çàêðîåòñÿ ÷åðåç 5 ñåêóíä.

    Ðèñ. 1.11. Èíôîðìàöèîííîå îêíî, ñîçäàííîå ìåòîäîì

    Popup


    Ìåòîä Popup âîçâðàùàåò öåëîå çíà÷åíèå, ñ ïîìîùüþ êîòîðîãî ìîæíî óçíàòü, êàêàÿ èìåííî êíîïêà áûëà íàæàòà äëÿ âûõîäà (òàáë. 1.11).


    Òàáëèöà 1.11. Âîçâðàùàåìûå ìåòîäîì

    Popup
    çíà÷åíèÿ

    Çíà÷åíèå Êîíñòàíòà Visual Basic Îïèñàíèå
    -1   Ïîëüçîâàòåëü íå íàæàë íè íà îäíó èç êíîïîê â òå÷åíèå âðåìåíè, çàäàííîãî ïàðàìåòðîì
    nSecToWait
    1
    vbOk
    Íàæàòà êíîïêà OK
    2
    vbCancel
    Íàæàòà êíîïêà Îòìåíà (Cancel)
    3
    vbAbort
    Íàæàòà êíîïêà Ñòîï (Abort)
    4
    vbRetry
    Íàæàòà êíîïêà Ïîâòîð (Retry)
    5
    vbIgnore
    Íàæàòà êíîïêà Ïðîïóñòèòü (Ignore)
    6
    vbYes
    Íàæàòà êíîïêà Äà (Yes)
    7
    vbNo
    Íàæàòà êíîïêà Íåò (No)

    Ïðèìåðû âûâîäà èíôîðìàöèè ñ ïîìîùüþ ìåòîäà

    Popup
    ïðåäñòàâëåíû â ãëàâå 2 (ñì. ëèñòèíãè 2.13 è 2.14).

    Ìåòîä RegDelete

    Åñëè ïàðàìåòð

    strName
    îêàí÷èâàåòñÿ ñèìâîëàìè
    \\
    , òî ýòîò ìåòîä óäàëÿåò êëþ÷ öåëèêîì (âìåñòå ñî âñåìè ïàðàìåòðàìè âíóòðè åãî), â ïðîòèâíîì ñëó÷àå óäàëÿåòñÿ òîëüêî îäèí çàäàííûé ïàðàìåòð. Ïàðàìåòð
    strName
    äîëæåí íà÷èíàòüñÿ ñ îäíîãî èç ñëåäóþùèõ êîðíåâûõ êëþ÷åé (òàáë. 1.12).


    Òàáëèöà 1.12. Íàçâàíèÿ êëþ÷åé

    Êðàòêîå íàçâàíèå Äëèííîå íàçâàíèå
    HCKU
    HKEY_CURRENT_USER
    HKLM
    HKEY_LOCAL_MACHINE
    HKCR
    HKEY_CLASSES_ROOT
     
    HKEY_USERS
     
    HKEY_CURRENT_CONFIG

    Ïðèìåð, èëëþñòðèðóþùèé ïðèìåíåíèå ìåòîäà

    RegDelete
    , ïðèâåäåí â ãëàâå 2 (ñì. ëèñòèíãè 2.45 è 2.46).

    Ìåòîä RegRead

    Ñ ïîìîùüþ ýòîãî ìåòîäà ìîæíî ïðî÷èòàòü ñëåäóþùèå òèïû äàííûõ:

    REG_SZ
    ,
    REG_EXPAND_SZ
    ,
    REG_DWORD
    ,
    REG_BINARY
    è
    REG_MULTI_SZ
    . Åñëè â ðååñòðå ñîäåðæàòñÿ äàííûå äðóãèõ òèïîâ, òî ìåòîä
    RegRead
    âåðíåò çíà÷åíèå
    DISP_E_TYPEMISMATCH
    .

    Åñëè ïàðàìåòð

    strName
    îêàí÷èâàåòñÿ ñèìâîëàìè
    \\
    , òî ýòîò ìåòîä ñ÷èòûâàåò çíà÷åíèå ïî óìîë÷àíèþ äëÿ ðàçäåëà (åñëè îíî óñòàíîâëåíî), â ïðîòèâíîì ñëó÷àå ÷èòàåòñÿ çíà÷åíèå ïàðàìåòðà.

     ñëåäóþùåì ïðèìåðå íà ýêðàí âûâîäÿòñÿ ñ÷èòàííûå èç ðååñòðà ñ ïîìîùüþ ìåòîäà

    RegRead
    çíà÷åíèå ïàðàìåòðà è çíà÷åíèå ïî óìîë÷àíèþ äëÿ ðàçäåëà ðååñòðà (ëèñòèíã 1.17).

    Ëèñòèíã 1.17. ×òåíèå çíà÷åíèé ïàðàìåòðà è ðàçäåëà ñèñòåìíîãî ðååñòðà

    /********************************************************************/

    /* Èìÿ: RegRead.js                                                  */

    /* ßçûê: JScript                                                    */

    /* Îïèñàíèå: ×òåíèå çíà÷åíèé ïàðàìåòðà è ðàçäåëà ñèñòåìíîãî ðååñòðà */

    /********************************************************************/

    var WS,s;

    //Ñîçäàåì îáúåêò WshShell

    WS = WScript.CreateObject("WScript.Shell");

    s="Çíà÷åíèå ïàðàìåòðà\n";

    s+="HKCU\\Control Panel\\Keyboard\\KeyboardSpeed = ";

    //×èòàåì çíà÷åíèå ïàðàìåòðà ðååñòðà

    s+=WS.RegRead("HKCU\\Control Panel\\Keyboard\\KeyboardSpeed")+"\n\n";

    s+="Çíà÷åíèå ïî óìîë÷àíèþ äëÿ ðàçäåëà\n";

    s+="HKCU\\Control Panel\\Keyboard\\ = ";

    //×èòàåì çíà÷åíèå ïî óìîë÷àíèþ äëÿ ðàçäåëà ðååñòðà

    s+=WS.RegRead("HKCU\\Control Panel\\Keyboard\\");

    //Âûâîä íà ýêðàí ñôîðìèðîâàííîé ñòðîêè

    WScript.Echo(s);

    /*************  Êîíåö ***********************************************/

    Ìåòîä RegWrite

    Åñëè ïàðàìåòð

    strName
    îêàí÷èâàåòñÿ ñèìâîëàìè
    \\
    , òî ýòîò ìåòîä çàïèñûâàåò ðàçäåë; åñëè òàêîãî ðàçäåëà íåò, îí áóäåò ñîçäàí. Åñëè â êîíöå
    strName
    îòñóòñòâóþò ñèìâîëû
    \\
    , òî ïðîèçâîäèòñÿ çàïèñü óêàçàííîãî ïàðàìåòðà â íóæíûé ðàçäåë; åñëè òàêîãî ïàðàìåòðà íåò, îí áóäåò ñîçäàí ñ óêàçàííûì èìåíåì è çíà÷åíèåì.

    Ïàðàìåòð

    anyValue
    ìåòîäà çàäàåò çíà÷åíèå, êîòîðîå íóæíî çàïèñàòü â çàäàííûé ïàðàìåòðîì
    strName
    ïàðàìåòð èëè ðàçäåë ðååñòðà. Íåîáÿçàòåëüíûé ïàðàìåòð
    strType
    îïðåäåëÿåò òèï çàïèñûâàåìîãî çíà÷åíèÿ.  êà÷åñòâå
    strType
    ìîæíî óêàçûâàòü "
    REG_SZ
    ", "
    REG_EXPAND_SZ
    ", "
    REG_DWORD
    " è "
    REG_BINARY
    ". Åñëè â êà÷åñòâå ïàðàìåòðà
    strType
    ïåðåäàåòñÿ äðóãîå çíà÷åíèå, òî ìåòîä
    RegWrite
    âåðíåò çíà÷åíèå
    E_INVALIDARG
    .

     ñëó÷àå, êîãäà

    strType
    óñòàíîâëåíî â "
    REG_SZ
    " èëè "
    REG_EXPAND_SZ
    ", ìåòîä
    RegWrite
    àâòîìàòè÷åñêè êîíâåðòèðóåò ïàðàìåòð
    anyValue
    â ñòðîêó. Åñëè çíà÷åíèå
    strType
    ðàâíî "
    REG_DWORD
    ", òî
    anyValue
    ïåðåâîäèòñÿ â öåëûé ôîðìàò. Åñëè strType ðàâíî "
    REG_BINARY
    ", òî
    anyValue
    äîëæíî áûòü öåëûì ÷èñëîì.

    Ïðèìåð, èëëþñòðèðóþùèé ïðèìåíåíèå ìåòîäà RegWrite, ïðèâåäåí â ãëàâå 2 (ñì. ëèñòèíãè 2.45 è 2.46).

    Ìåòîä Run

    Ïàðàìåòð

    intWindowStyle
    óñòàíàâëèâàåò âèä îêíà äëÿ çàïóñêàåìîãî ïðèëîæåíèÿ (òàáë. 1.13).


    Òàáëèöà 1.13. Òèïû îêíà (

    intWindowStyle
    )

    Ïàðàìåòð Êîíñòàíòà Visual Basic Îïèñàíèå
    0
    vbHide
    Ïðÿ÷åò òåêóùåå îêíî è àêòèâèçèðóåò äðóãîå îêíî (ïîêàçûâàåò åãî è ïåðåäàåò åìó ôîêóñ)
    1
    vbNormalFocus
    Àêòèâèçèðóåò è îòîáðàæàåò îêíî. Åñëè îêíî áûëî ìèíèìèçèðîâàíî èëè ìàêñèìèçèðîâàíî, ñèñòåìà âîññòàíîâèò åãî ïåðâîíà÷àëüíîå ïîëîæåíèå è ðàçìåð. Ýòîò ôëàã äîëæåí óêàçûâàòüñÿ ñöåíàðèåì âî âðåìÿ ïåðâîãî îòîáðàæåíèÿ îêíà
    2
    vbMinimizedFocus
    Àêòèâèçèðóåò îêíî è îòîáðàæàåò åãî â ìèíèìèçèðîâàííîì (ñâåðíóòîì) âèäå
    3
    vbMaximizedFocus
    Àêòèâèçèðóåò îêíî è îòîáðàæàåò åãî â ìàêñèìèçèðîâàííîì (ðàçâåðíóòîì) âèäå
    4
    vbNormalNoFocus
    Îòîáðàæàåò îêíî â òîì âèäå, â êîòîðîì îíî íàõîäèëîñü ïîñëåäíèé ðàç. Àêòèâíîå îêíî ïðè ýòîì îñòàåòñÿ àêòèâíûì
    5   Àêòèâèçèðóåò îêíî è îòîáðàæàåò åãî â òåêóùåì ñîñòîÿíèè
    6 vbMinimizedNoFocus Ìèíèìèçèðóåò çàäàííîå îêíî è àêòèâèçèðóåò ñëåäóþùåå (â Z-ïîðÿäêå) îêíî
    7   Îòîáðàæàåò îêíî â ñâåðíóòîì âèäå. Àêòèâíîå îêíî ïðè ýòîì îñòàåòñÿ àêòèâíûì
    8   Îòîáðàæàåò îêíî â åãî òåêóùåì ñîñòîÿíèè. Àêòèâíîå îêíî ïðè ýòîì îñòàåòñÿ àêòèâíûì
    9   Àêòèâèçèðóåò è îòîáðàæàåò îêíî. Åñëè îêíî áûëî ìèíèìèçèðîâàíî èëè ìàêñèìèçèðîâàíî, ñèñòåìà âîññòàíîâèò åãî ïåðâîíà÷àëüíîå ïîëîæåíèå è ðàçìåð. Ýòîò ôëàã äîëæåí óêàçûâàòüñÿ, åñëè ïðîèçâîäèòñÿ âîññòàíîâëåíèå ñâåðíóòîãî îêíà (åãî íåëüçÿ èñïîëüçîâàòü â ìåòîäå
    Run
    )
    10   Óñòàíàâëèâàåò ðåæèì îòîáðàæåíèÿ, îïèðàþùèéñÿ íà ðåæèì ïðîãðàììû, êîòîðàÿ çàïóñêàåò ïðèëîæåíèå

    Çàìå÷àíèå

    Â ñöåíàðèÿõ, íàïèñàííûõ íà ÿçûêå VBScript, ìîæíî íåïîñðåäñòâåííî èñïîëüçîâàòü èìåíîâàííûå êîíñòàíòû òèïà

    vbHide
    áåç ïðåäâàðèòåëüíîãî èõ îáúÿâëåíèÿ. Äëÿ òîãî ÷òîáû èñïîëüçîâàòü òàêèå êîíñòàíòû â JScript-ñöåíàðèÿõ, èõ íóæíî ïðåäâàðèòåëüíî îáúÿâèòü êàê ïåðåìåííûå è ïðèñâîèòü íóæíûå çíà÷åíèÿ (íàïðèìåð,
    var vbHide=0;
    ). Åñòåñòâåííî, â ëþáûõ ñöåíàðèÿõ âìåñòî èìåí êîíñòàíò ìîæíî èñïîëüçîâàòü èõ ÷èñëîâûå çíà÷åíèÿ.

    Íåîáÿçàòåëüíûé ïàðàìåòð

    bWaitOnReturn
    ÿâëÿåòñÿ ëîãè÷åñêîé ïåðåìåííîé, äàþùåé óêàçàíèå îæèäàòü çàâåðøåíèÿ çàïóùåííîãî ïðîöåññà. Åñëè ýòîò ïàðàìåòð íå óêàçàí èëè óñòàíîâëåí â
    false
    , òî ïîñëå çàïóñêà èç ñöåíàðèÿ íîâîãî ïðîöåññà óïðàâëåíèå ñðàçó æå âîçâðàùàåòñÿ îáðàòíî â ñöåíàðèé (íå äîæèäàÿñü çàâåðøåíèÿ çàïóùåííîãî ïðîöåññà). Åñëè æå
    bWaitOnReturn
    óñòàíîâëåí â
    true
    , òî ñöåíàðèé âîçîáíîâèò ðàáîòó òîëüêî ïîñëå çàâåðøåíèÿ âûçâàííîãî ïðîöåññà.

    Ïðè ýòîì åñëè ïàðàìåòð

    bWaitOnReturn
    ðàâåí
    true
    , òî ìåòîä
    Run
    âîçâðàùàåò êîä âûõîäà âûçâàííîãî ïðèëîæåíèÿ. Åñëè æå
    bWaitOnReturn
    ðàâåí
    false
    èëè íå çàäàí, òî ìåòîä
    Run
    âñåãäà âîçâðàùàåò íîëü.

    Â ñëåäóþùåì ïðèìåðå ìû çàïóñêàåì Áëîêíîò (notepad.exe) è îòêðûâàåì â íåì ôàéë ñ âûïîëíÿåìûì ñöåíàðèåì:

    var WshShell = WScript.CreateObject("WScript.Shell");

    WshShell.Run("%windir%\\notepad" + WScript.ScriptFullName);

    Ñëåäóþùèé ñöåíàðèé ïå÷àòàåò êîä âûõîäà âûçâàííîãî ïðèëîæåíèÿ (ëèñòèíã 1.18).

    Ëèñòèíã 1.18. Âûâîä êîäà âûõîäà çàïóùåííîãî ïðèëîæåíèÿ

    /********************************************************************/

    /* Èìÿ: RetCode.js                                                  */

    /* ßçûê: JScript                                                    */

    /* Îïèñàíèå: Âûâîä êîäà âûõîäà çàïóùåííîãî ïðèëîæåíèÿ               */

    /********************************************************************/

    //Ñîçäàåì îáúåêò WshShell

    var WshShell = WScript.CreateObject("WScript.Shell");

    //Çàïóñêàåì Áëîêíîò è îæèäàåì çàâåðøåíèÿ åãî ðàáîòû

    Return = WshShell.Run("notepad " + WScript.ScriptFullName, 1, true);

    //Ïå÷àòàåì êîä âîçâðàòà

    WScript.Echo("Êîä âîçâðàòà:", Return);

    /*************  Êîíåö ***********************************************/

    Äðóãèå ïðèìåðû çàïóñêà ïðèëîæåíèé ñ ïîìîùüþ ìåòîäà Run ïðèâåäåíû â ãëàâå 2 (ñì. ëèñòèíãè 2.31 è 2.32).

    Ìåòîä SendKeys

    Êàæäàÿ êëàâèøà çàäàåòñÿ îäíèì èëè íåñêîëüêèìè ñèìâîëàìè. Íàïðèìåð, äëÿ òîãî ÷òîáû çàäàòü íàæàòèå äðóã çà äðóãîì áóêâ À, Á è Â, íóæíî óêàçàòü â êà÷åñòâå ïàðàìåòðà äëÿ

    SendKeys
    ñòðîêó "
    ÀÁÂ
    ":
    string="AÁB"
    .

    Íåñêîëüêî ñèìâîëîâ èìåþò â ìåòîäå SendKeys ñïåöèàëüíîå çíà÷åíèå:

    +
    ,
    ^
    ,
    %
    ,
    ~
    ,
    (
    ,
    )
    . Äëÿ òîãî ÷òîáû çàäàòü îäèí èç ýòèõ ñèìâîëîâ, èõ íóæíî çàêëþ÷èòü â ôèãóðíûå ñêîáêè
    {}
    . Íàïðèìåð, äëÿ çàäàíèÿ çíàêà ïëþñ èñïîëüçóåòñÿ
    {+}
    . Êâàäðàòíûå ñêîáêè
    []
    õîòÿ è íå èìåþò â ìåòîäå SendKeys ñïåöèàëüíîãî ñìûñëà, èõ òàêæå íóæíî çàêëþ÷àòü â ôèãóðíûå ñêîáêè. Êðîìå ýòîãî, äëÿ çàäàíèÿ ñàìèõ ôèãóðíûõ ñêîáîê ñëåäóåò èñïîëüçîâàòü ñëåäóþùèå êîíñòðóêöèè:
    {{}
    (ëåâàÿ ñêîáêà) è
    {}}
    (ïðàâàÿ ñêîáêà).

    Äëÿ çàäàíèÿ íåîòîáðàæàåìûõ ñèìâîëîâ, òàêèõ êàê <Enter> èëè <Tab> è ñïåöèàëüíûõ êëàâèø, â ìåòîäå

    SendKeys
    èñïîëüçóþòñÿ êîäû, ïðåäñòàâëåííûå â òàáë. 1.14.


    Òàáëèöà 1.14. Êîäû ñïåöèàëüíûõ êëàâèø äëÿ

    SendKeys

    Íàçâàíèÿ êëàâèø Êîä Íàçâàíèÿ êëàâèø Êîä
    <Backspace>
    {BACKSPACE}
    ,
    {BS}
    èëè
    {BKSP}
    <>>
    {RIGHT}
    <Break>
    {BREAK}
    <F1>
    {F1}
    <Caps Lock>
    {CAPSLOCK}
    <F2>
    {F2}
    <Del> èëè <Delete>
    {DELETE}
    èëè
    {DEL}
    <F3>
    {F3}
    <End>
    {END}
    <F4>
    {F4}
    <Enter>
    {ENTER}
    ÈËÈ
    ~
    <F5>
    {F5}
    <Esc>
    {ESC}
    <F6>
    {F6}
    <Home>
    {HELP}
    <F7>
    {F7}
    <Ins> èëè <Insert>
    {INSERT}
    èëè
    {INS}
    <F8>
    {F8}
    <Num Lock>
    {NUMLOCK}
    <F9>
    {F9}
    <Page Down>
    {PGDN}
    <F10>
    {F10}
    <Page Up>
    {PGUP}
    <F11>
    {F11}
    <Print Screen>
    {PRTSC}
    <F12>
    {F12}
    <Scroll Lock>
    {SCROLLLOCK}
    <F13>
    {F13}
    <Tab>
    {TAB}
    <F14>
    {F14}
    <^>
    {UP}
    <F15>
    {F15}
    <<>
    {LEFT}
    <F16>
    {F16}
    <v> {DOWN}    

    Äëÿ çàäàíèÿ êîìáèíàöèé êëàâèø ñ <Shift>, <Ctrl> èëè <Alt>, ïåðåä ñîîòâåòñòâóþùåé êëàâèøåé íóæíî ïîñòàâèòü îäèí èëè íåñêîëüêî êîäîâ èç òàáë. 1.15.


    Òàáëèöà 1.15. Êîäû êëàâèø <Shift>, <Ctrl> è <Alt>

    Êëàâèøà Êîä
    <Shift>
    +
    <Ctrl>
    ^
    <Alt>
    %

    Äëÿ òîãî ÷òîáû çàäàòü êîìáèíàöèþ êëàâèø, êîòîðóþ íóæíî íàáèðàòü, óäåðæèâàÿ íàæàòûìè êëàâèøè <Shift>, <Ñtrl> èëè <Alt>, íóæíî çàêëþ÷èòü êîäû ýòèõ êëàâèø â ñêîáêè. Íàïðèìåð, åñëè òðåáóåòñÿ ñûìèòèðîâàòü íàæàòèå êëàâèø <G> è <S> ïðè íàæàòîé êëàâèøå <Shift>, ñëåäóåò èñïîëüçîâàòü ïîñëåäîâàòåëüíîñòü "

    +(GS)
    ". Äëÿ òîãî æå, ÷òîáû çàäàòü îäíîâðåìåííîå íàæàòèå êëàâèø <Shift>+<G>, à çàòåì <S> (óæå áåç <Shift>), èñïîëüçóåòñÿ "
    +GS
    ".

     ìåòîäå SendKeys ìîæíî çàäàòü íåñêîëüêî íàæàòèé ïîäðÿä îäíîé è òîé æå êëàâèøè. Äëÿ ýòîãî íåîáõîäèìî â ôèãóðíûõ ñêîáêàõ óêàçàòü êîä íóæíîé êëàâèøè, à ÷åðåç ïðîáåë — ÷èñëî íàæàòèé. Íàïðèìåð,

    {LEFT 42}
    îçíà÷àåò íàæàòèå êëàâèøè <<> 42 ðàçà ïîäðÿä;
    {h 10}
    îçíà÷àåò íàæàòèå êëàâèøè <h> 10 ðàç ïîäðÿä.

    Çàìå÷àíèå

    Ìåòîä

    SendKeys
    íå ìîæåò áûòü èñïîëüçîâàí äëÿ ïîñûëêè íàæàòèé êëàâèø äëÿ ïðèëîæåíèé, êîòîðûå íå áûëè ðàçðàáîòàíû ñïåöèàëüíî äëÿ çàïóñêà â Microsoft Windows (íàïðèìåð, äëÿ ïðèëîæåíèé MS-DOS).

    Ïðèìåðû, èëëþñòðèðóþùèå èñïîëüçîâàíèå

    SendKeys
    , ïðèâåäåíû â ëèñòèíãàõ 1.13, 2.31, 2.32.

    Ðàáîòà ñ ÿðëûêàìè

    Ñâîéñòâà è ìåòîäû äëÿ ðàáîòû ñ ÿðëûêàìè Windows ïðåäîñòàâëÿþò äâà îáúåêòà WSH:

    WshShortcut
    è
    WshUrlShortcut
    .

    Îáúåêò WshShortcut

    Ñ ïîìîùüþ îáúåêòà

    WshShortcut
    ìîæíî ñîçäàòü íîâûé ÿðëûê Windows èëè èçìåíèòü ñâîéñòâà óæå ñóùåñòâóþùåãî ÿðëûêà. Ýòîò îáúåêò ìîæíî ñîçäàòü òîëüêî ñ ïîìîùüþ ìåòîäà
    CreateShortcut
    îáúåêòà
    WshShell
    . Â ëèñòèíãå 1.19 ïðåäñòàâëåí ïðèìåð ñöåíàðèÿ, â êîòîðîì ñîçäàåòñÿ ÿðëûê íà ýòîò ñàìûé ñöåíàðèé (ÿðëûê áóäåò íàõîäèòüñÿ â òåêóùåì êàòàëîãå).

    Ëèñòèíã 1.19. Ñîçäàíèå ÿðëûêà íà âûïîëíÿåìûé ñöåíàðèé

    /*****************************************************************/

    /* Èìÿ: MakeShortcut1.js                                         */

    /* ßçûê: JScript                                                 */

    /* Îïèñàíèå: Ñîçäàíèå ÿðëûêà íà âûïîëíÿåìûé ñöåíàðèé             */

    /*****************************************************************/

    var WshShell,oShellLink;

    //Ñîçäàåì îáúåêò WshShell

    WshShell = WScript.CreateObject("WScript.Shell");

    //Ñîçäàåì ÿðëûê â òåêóùåì êàòàëîãå

    oShellLink = WshShell.CreateShortcut("Current Script.lnk");

    //Óñòàíàâëèâàåì ïóòü ê ôàéëó

    oShellLink.TargetPath = WScript.ScriptFullName;

    //Ñîõðàíÿåì ÿðëûê

    oShellLink.Save();

    /*************  Êîíåö *********************************************/

    Ñâîéñòâà îáúåêòà

    WshShortcut
    îïèñàíû â òàáë. 1.16.


    Òàáëèöà 1.16. Ñâîéñòâà îáúåêòà

    WshShortcut

    Ñâîéñòâî Îïèñàíèå
    Arguments
    Ñîäåðæèò ñòðîêó, çàäàþùóþ ïàðàìåòðû êîìàíäíîé ñòðîêè äëÿ ÿðëûêà
    Description
    Ñîäåðæèò îïèñàíèå ÿðëûêà
    FullName
    Ñîäåðæèò ñòðîêó ñ ïîëíûì ïóòåì ê ÿðëûêó
    HotKey
    Çàäàåò "ãîðÿ÷óþ" êëàâèøó äëÿ ÿðëûêà, ò.å. îïðåäåëÿåò êîìáèíàöèþ êëàâèø, ñ ïîìîùüþ êîòîðîé ìîæíî çàïóñòèòü èëè ñäåëàòü àêòèâíîé ïðîãðàììó, íà êîòîðóþ óêàçûâàåò çàäàííûé ÿðëûê
    IconLocation
    Çàäàåò ïóòü ê çíà÷êó ÿðëûêà
    TargetPath
    Óñòàíàâëèâàåò ïóòü ê ôàéëó, íà êîòîðûé óêàçûâàåò ÿðëûê
    WindowStyle
    Îïðåäåëÿåò âèä îêíà äëÿ ïðèëîæåíèÿ, íà êîòîðîå óêàçûâàåò ÿðëûê
    WorkingDirectory
    Çàäàåò ðàáî÷èé êàòàëîã äëÿ ïðèëîæåíèÿ, íà êîòîðîå óêàçûâàåò ÿðëûê

    Ïðèâåäåì íåîáõîäèìûå ïîÿñíåíèÿ è ïðèìåðû èñïîëüçîâàíèÿ ñâîéñòâ îáúåêòà

    WshShortcut
    .

    Ñâîéñòâî Arguments

    Â ëèñòèíãå 1.20 ïðèâåäåí ïðèìåð ñöåíàðèÿ, ñîçäàþùåãî ÿðëûê íà ýòîò ñàìûé ñöåíàðèé ñ äâóìÿ ïàðàìåòðàìè êîìàíäíîé ñòðîêè.

    Ëèñòèíã 1.20. Ñîçäàíèå ÿðëûêà íà âûïîëíÿåìûé ñöåíàðèé ñ àðãóìåíòàìè êîìàíäíîé ñòðîêè

    /*****************************************************************/

    /* Èìÿ: MakeShortcut2.js                                         */

    /* ßçûê: JScript                                                 */

    /* Îïèñàíèå: Ñîçäàíèå ÿðëûêà íà âûïîëíÿåìûé ñöåíàðèé  ñ          */

    /*           àðãóìåíòàìè êîìàíäíîé ñòðîêè                        */

    /*****************************************************************/

    var WshShell,oShellLink;

    //Ñîçäàåì îáúåêò WshShell

    WshShell = WScript.CreateObject("WScript.Shell");

    //Ñîçäàåì ÿðëûê â òåêóùåì êàòàëîãå

    oShellLink = WshShell.CreateShortcut("Current Script.lnk");

    //Óñòàíàâëèâàåì ïóòü ê ôàéëó

    oShellLink.TargetPath = WScript.ScriptFullName;

    //Óêàçûâàåì àðãóìåíòû êîìàíäíîé ñòðîêè

    oShellLink.Arguments = "-a abc.txt";

    //Ñîõðàíÿåì ÿðëûê

    oShellLink.Save();

    /*************  Êîíåö *********************************************/

    Ñâîéñòâî HotKey

    Äëÿ òîãî ÷òîáû íàçíà÷èòü ÿðëûêó "ãîðÿ÷óþ" êëàâèøó, íåîáõîäèìî â ñâîéñòâî

    HotKey
    çàïèñàòü ñòðîêó, ñîäåðæàùóþ íàçâàíèÿ íóæíûõ êëàâèø, ðàçäåëåííûå ñèìâîëîì "
    +
    ".

    Çàìå÷àíèå

    "Ãîðÿ÷èå" êëàâèøè ìîãóò áûòü íàçíà÷åíû òîëüêî ÿðëûêàì, êîòîðûå ðàñïîëîæåíû íà ðàáî÷åì ñòîëå Windows èëè â ìåíþ Ïóñê (Start). Äëÿ òîãî ÷òîáû íàæàòèÿ "ãîðÿ÷èõ" êëàâèø ñðàáàòûâàëè, íåîáõîäèìî, ÷òîáû ÿçûêîì ïî óìîë÷àíèþ â îïåðàöèîííîé ñèñòåìå áûë íàçíà÷åí àíãëèéñêèé.

     ñëåäóþùåì ïðèìåðå (ëèñòèíã 1.21) íà ðàáî÷åì ñòîëå ñîçäàåòñÿ ÿðëûê äëÿ Áëîêíîòà, êîòîðîìó íàçíà÷àåòñÿ êîìáèíàöèÿ "ãîðÿ÷èõ" êëàâèø <Ctrl>+ +<Alt>+<D>.

    Ëèñòèíã 1.21. Ñîçäàíèå ÿðëûêà íà Áëîêíîò ñ êîìáèíàöèåé "ãîðÿ÷èõ" êëàâèø

    /*****************************************************************/

    /* Èìÿ: MakeShortcut3.js                                         */

    /* ßçûê: JScript                                                 */

    /* Îïèñàíèå: Ñîçäàíèå ÿðëûêà íà Áëîêíîò ñ êîìáèíàöèåé ãîðÿ÷èõ    */

    /*           êëàâèø                                              */

    /*****************************************************************/

    var WshShell,strDesktop,oMyShortcut;

    //Ñîçäàåì îáúåêò WshShell

    WshShell = WScript.CreateObject("WScript.Shell");

    //Îïðåäåëÿåì ïóòü ê ðàáî÷åìó ñòîëó

    strDesktop = WshShell.SpecialFolders("Desktop");

    //Ñîçäàåì ÿðëûê â òåêóùåì êàòàëîãå

    oMyShortcut = WshShell.CreateShortcut(strDesktop+"\\a_key.lnk");

    //Óñòàíàâëèâàåì ïóòü ê ôàéëó

    oMyShortcut.TargetPath =

     WshShell.ExpandEnvironmentStrings("%windir%\\notepad.exe");

    //Íàçíà÷àåì êîìáèíàöèþ ãîðÿ÷èõ êëàâèø

    oMyShortcut.Hotkey = "CTRL+ALT+D";

    //Ñîõðàíÿåì ÿðëûê

    oMyShortcut.Save();

    WScript.Echo("Ãîðÿ÷èå êëàâèøè äëÿ ÿðëûêà: "+oMyShortcut.Hotkey);

    /*************  Êîíåö *********************************************/

    Ñâîéñòâî IconLocation

    Äëÿ òîãî ÷òîáû çàäàòü çíà÷îê äëÿ ÿðëûêà, íåîáõîäèìî â ñâîéñòâî

    IconLocation
    çàïèñàòü ñòðîêó ñëåäóþùåãî ôîðìàòà: "ïóòü, èíäåêñ". Çäåñü ïàðàìåòð ïóòü îïðåäåëÿåò ðàñïîëîæåíèå ôàéëà, ñîäåðæàùåãî íóæíûé çíà÷îê, à ïàðàìåòð èíäåêñ — íîìåð ýòîãî çíà÷êà â ôàéëå (íîìåðà íà÷èíàþòñÿ ñ íóëÿ).

     ñëåäóþùåì ïðèìåðå (ëèñòèíã 1.22) ñîçäàåòñÿ ÿðëûê íà âûïîëíÿþùèéñÿ ñöåíàðèé ñ ïåðâûì çíà÷êîì (èíäåêñ 0) èç ôàéëà notepad.exe.

    Ëèñòèíã 1.22. Ñîçäàíèå ÿðëûêà íà âûïîëíÿåìûé ñöåíàðèé ñî çíà÷êîì èç notepad.exe

    /*****************************************************************/

    /* Èìÿ: MakeShortcut4.js                                         */

    /* ßçûê: JScript                                                 */

    /* Îïèñàíèå: Ñîçäàíèå ÿðëûêà íà âûïîëíÿåìûé ñöåíàðèé ñ èêîíêîé   */

    /*           èç notepad.exe                                      */

    /*****************************************************************/

    var WshShell,oShellLink;

    //Ñîçäàåì îáúåêò WshShell

    WshShell = WScript.CreateObject("WScript.Shell");

    //Ñîçäàåì ÿðëûê â òåêóùåì êàòàëîãå

    oShellLink = WshShell.CreateShortcut("Current Script.lnk");

    //Óñòàíàâëèâàåì ïóòü ê ôàéëó

    oShellLink.TargetPath = WScript.ScriptFullName;

    //Âûáèðàåì èêîíêó èç ôàéëà notepad.exe

    oShellLink.IconLocation = "notepad.exe, 0";

    //Ñîõðàíÿåì ÿðëûê

    oShellLink.Save();

    /*************  Êîíåö *********************************************/

    Ñâîéñòâî WindowStyle

    Çíà÷åíèåì ñâîéñòâà

    WindowStyle
    ÿâëÿåòñÿ öåëîå ÷èñëî
    intWindowStyle
    , êîòîðîå ìîæåò ïðèíèìàòü çíà÷åíèÿ, ïðèâåäåííûå â òàáë. 1.17.


    Òàáëèöà 1.17. Çíà÷åíèÿ ïàðàìåòðà

    intWindowStyle

    IntWindowStyle
    Îïèñàíèå
    1 Ñòàíäàðòíûé ðàçìåð îêíà. Åñëè îêíî áûëî ìèíèìèçèðîâàíî èëè ìàêñèìèçèðîâàíî, òî áóäóò âîññòàíîâëåíû åãî ïåðâîíà÷àëüíûå ðàçìåðû è ðàñïîëîæåíèå íà ýêðàíå
    3 Îêíî ïðè çàïóñêå ïðèëîæåíèÿ áóäåò ðàçâåðíóòî íà âåñü ýêðàí (ìàêñèìèçèðîâàíî)
    7 Îêíî ïðè çàïóñêå ïðèëîæåíèÿ áóäåò ñâåðíóòî â çíà÷îê (ìèíèìèçèðîâàíî) 

    Ñâîéñòâî WorkingDirectory

     ñëåäóþùåì ïðèìåðå (ëèñòèíã 1.23) ñîçäàåòñÿ ÿðëûê äëÿ Áëîêíîòà, ïðè÷åì â êà÷åñòâå ðàáî÷åãî êàòàëîãà óêàçàí êîðíåâîé êàòàëîã äèñêà Ñ:.

    Ëèñòèíã 1.23. Ñîçäàíèå ÿðëûêà íà Áëîêíîò ñ êîìáèíàöèåé ãîðÿ÷èõ êëàâèø

    /*****************************************************************/

    /* Èìÿ: MakeShortcut5.js                                         */

    /* ßçûê: JScript                                                 */

    /* Îïèñàíèå: Ñîçäàíèå ÿðëûêà íà Áëîêíîò ñ èçìåíåíèåì ðàáî÷åãî    */

    /*           êàòàëîãà                                            */

    /*****************************************************************/

    var WshShell,oShellLink;

    //Ñîçäàåì îáúåêò WshShell

    WshShell = WScript.CreateObject("WScript.Shell");

    //Ñîçäàåì ÿðëûê â òåêóùåì êàòàëîãå

    oShellLink = WshShell.CreateShortcut("Notepad.lnk");

    //Óñòàíàâëèâàåì ïóòü ê ôàéëó

    oShellLink.TargetPath = "notepad.exe";

    //Íàçíà÷àåì ðàáî÷èé êàòàëîã

    oShellLink.WorkingDirectory = "c:\\";

    //Ñîõðàíÿåì ÿðëûê

    oShellLink.Save();

    /*************  Êîíåö *********************************************/

    Îáúåêò

    WshShortcut
    èìååò åäèíñòâåííûé ìåòîä
    Save
    , êîòîðûé ñîõðàíÿåò çàäàííûé ÿðëûê â êàòàëîãå, óêàçàííîì â ñâîéñòâå
    FullName
    .

    Îáúåêò WshUrlShortcut

    Ñ ïîìîùüþ îáúåêòà

    WshUrlShortcut
    ìîæíî ñîçäàòü íîâûé ÿðëûê äëÿ ñåòåâûõ ðåñóðñîâ èëè èçìåíèòü ñâîéñòâà óæå ñóùåñòâóþùåãî ÿðëûêà. Ýòîò îáúåêò, êàê è
    WshShortcut
    , ìîæíî ñîçäàòü òîëüêî ñ ïîìîùüþ ìåòîäà
    CreateShortcut
    îáúåêòà
    WshShell
    .

    Â ñëåäóþùåì ïðèìåðå (ëèñòèíã 1.24) ñîçäàåòñÿ ñåòåâîé ÿðëûê äëÿ ñàéòà www.microsoft.com.

    Ëèñòèíã 1.24. Ñîçäàíèå ñåòåâîãî ÿðëûêà

    /*****************************************************************/

    /* Èìÿ: MakeShortcut6.js                                         */

    /* ßçûê: JScript                                                 */

    /* Îïèñàíèå: Ñîçäàíèå ñåòåâîãî ÿðëûêà äëÿ www.microsoft.com      */

    /*****************************************************************/

    var WshShell,oUrlLink;

    //Ñîçäàåì îáúåêò WshShell

    WshShell = WScript.CreateObject("WScript.Shell");

    //Ñîçäàåì ÿðëûê â òåêóùåì êàòàëîãå

    oUrlLink = WshShell.CreateShortcut("Microsoft Web Site.URL");

    //Óñòàíàâëèâàåì ïóòü ê ñàéòó

    oUrlLink.TargetPath = "http://www.microsoft.com";

    //Ñîõðàíÿåì ÿðëûê

    oUrlLink.Save();

    /*************  Êîíåö *********************************************/

    Îáúåêò

    WshUrlShortcut
    èìååò äâà ñâîéñòâà:
    FullName
    è
    TargetPath
    , êîòîðûå ïîëíîñòüþ àíàëîãè÷íû îäíîèìåííûì ñâîéñòâàì ðàññìîòðåííîãî âûøå îáúåêòà
    WshShortcut
    .

    Òàêæå ó îáúåêòà

    WshUrlShortcut
    èìååòñÿ ìåòîä
    Save
    , ñ ïîìîùüþ êîòîðîãî ÿðëûê ñîõðàíÿåòñÿ â êàòàëîãå, óêàçàííîì â ñâîéñòâå
    FullName
    .

    Äðóãèå ïðèìåðû ðàáîòû ñ ÿðëûêàìè ñ ïîìîùüþ îáúåêòà

    WshShortcut
    ïðèâåäåíû â ãëàâå 2 (ñì. ëèñòèíãè 2.43 è 2.44).

    Çàïóñê ïðîöåññîâ íà ëîêàëüíîé è óäàëåííîé ìàøèíå

    Èç ñöåíàðèåâ WSH 5.6 ìîæíî íà ëîêàëüíîé ìàøèíå çàïóñêàòü äî÷åðíèå ïðîöåññû, èìåÿ ïðè ýòîì äîñòóï ê èõ ñòàíäàðòíûì âõîäíûì/âûõîäíûì ïîòîêàì è êîíòðîëèðóÿ õîä âûïîëíåíèÿ ýòèõ ïðîöåññîâ. Äëÿ ýòèõ öåëåé ïðåäíàçíà÷åí îáúåêò

    WshScriptExec
    .

    Êðîìå ýòîãî, èìååòñÿ âîçìîæíîñòü çàïóñòèòü ñöåíàðèé, ôàéë ñ êîòîðûì íàõîäèòñÿ íà ëîêàëüíîé ìàøèíå, íà äðóãîé óäàëåííîé ìàøèíå. Äëÿ âûïîëíåíèÿ ñöåíàðèåâ íà óäàëåííûõ ìàøèíàõ è îáðàáîòêè îøèáîê, âîçíèêàþùèõ â òàêèõ ñöåíàðèÿõ, èñïîëüçóþòñÿ îáúåêòû

    WshController
    ,
    WshRemote
    è
    WshRemoteError
    .

    Îáúåêò WshScriptExec

    Â WSH 5.6 ïîÿâèëàñü âîçìîæíîñòü ïðè ïîìîùè ìåòîäà

    WshShell.Exec
    çàïóñêàòü êîíñîëüíîå ïðèëîæåíèå èëè ñöåíàðèé êàê äî÷åðíèé ïðîöåññ âûïîëíÿåìîãî ñöåíàðèÿ, ò.å. ñ òåìè æå ïåðåìåííûìè ñðåäû, ÷òî è ó ïðîöåññà-ðîäèòåëÿ. Ìåòîä
    WshShell.Exec
    âûïîëíÿåò êîìàíäíóþ ñòðîêó, óêàçàííóþ â êà÷åñòâå åãî ïàðàìåòðà, è âîçâðàùàåò îáúåêò
    WScriptExec
    , ñâîéñòâà è ìåòîäû êîòîðîãî ïðåäîñòàâëÿþò èíôîðìàöèþ î çàïóùåííîé çàäà÷å è îáåñïå÷èâàþò äîñòóï ê åå ñòàíäàðòíûì ïîòîêàì ââîäà/âûâîäà è îøèáîê (îáðàáîòêà ýòèõ ïîòîêîâ íåîáõîäèìà â ñèëó òîãî, ÷òî íåïîñðåäñòâåííî íà ýêðàíå ñòðîêè, âûâîäèìûå äî÷åðíèì ïðèëîæåíèåì, íå ïîÿâëÿþòñÿ).

    Îòìåòèì òàêæå, ÷òî ñ ïîìîùüþ ìåòîäà

    WshShell.Exec
    ìîæíî çàïóñêàòü è ãðàôè÷åñêèå îêîííûå Windows-ïðèëîæåíèÿ.  ýòîì ñëó÷àå ñîçäàâàåìûé îáúåêò
    WshScriptExec
    ïîëåçåí òåì, ÷òî îí ïîçâîëÿåò ïîëó÷èòü èäåíòèôèêàòîð çàïóùåííîãî ïðîöåññà (Process ID, PID), êîòîðûé çàòåì ìîæíî èñïîëüçîâàòü äëÿ àêòèâèçàöèè çàäà÷è ïðè ïîìîùè ìåòîäà
    WshShell.AppActivate
    .

    Îáúåêò

    WScriptExec
    èìååò åäèíñòâåííûé ìåòîä
    Terminate
    , ñ ïîìîùüþ êîòîðîãî ìîæíî ïðåðâàòü âûïîëíåíèå äî÷åðíåãî ïðîöåññà.

    Íàïðèìåð:

    var WshShell=WScript.CreateObject("WScript.Shell");

    var ChildJob = WshShell.Exec("cscript ChildScript.js");

    ChildJob.Terminate();

    Ìåòîä

    Terminate
    ïûòàåòñÿ çàêðûòü ïðèëîæåíèå, ïîñûëàÿ åìó ñîîáùåíèå
    WM_CLOSE
    . Åñëè ýòî íå ñðàáàòûâàåò, çàäà÷à çàâåðøàåòñÿ ïðèíóäèòåëüíî. Ìåòîäîì
    Terminate
    íóæíî ïîëüçîâàòüñÿ òîëüêî â êðàéíåì ñëó÷àå, ò.ê. íåêîòîðûå ïðèëîæåíèÿ, çàâåðøåííûå òàêèì ñïîñîáîì, íå ïîëíîñòüþ îñâîáîæäàþò ðåñóðñû. Ïîýòîìó, êàê ïðàâèëî, ëó÷øå äîæäàòüñÿ, êîãäà çàïóùåííàÿ çàäà÷à ñàìà çàêîí÷èò ñâîþ ðàáîòó.

    Ñâîéñòâà îáúåêòà

    WshScriptExec
    îïèñàíû â òàáë. 1.18.


    Òàáëèöà 1.18. Ñâîéñòâà îáúåêòà

    WshScriptExec

    Ñâîéñòâî Îïèñàíèå
    ExitCode
    Ñîäåðæèò êîä âûõîäà, óñòàíàâëèâàåìûé äî÷åðíåé çàäà÷åé ïðè çàâåðøåíèè âûïîëíåíèÿ
    ProcessID
    Ñîäåðæèò èäåíòèôèêàòîð ïðîöåññà (ProcessID, PID), êîòîðîìó ñîîòâåòñòâóåò îáúåêò
    WshScriptExec
    Status
    Ñîäåðæèò èíôîðìàöèþ î õîäå âûïîëíåíèÿ äî÷åðíåé çàäà÷è
    StdOut
    Ïîçâîëÿåò ñöåíàðèþ-ðîäèòåëþ ñ÷èòûâàòü èíôîðìàöèþ èç ñòàíäàðòíîãî âûõîäíîãî ïîòîêà çàïóùåííîé äî÷åðíåé çàäà÷è
    StdIn
    Ïîçâîëÿåò ñöåíàðèþ-ðîäèòåëþ çàïèñûâàòü èíôîðìàöèþ â ñòàíäàðòíûé âõîäíîé ïîòîê çàïóùåííîé äî÷åðíåé çàäà÷è
    StdErr
    Ïîçâîëÿåò ñöåíàðèþ-ðîäèòåëþ ñ÷èòûâàòü èíôîðìàöèþ èç ñòàíäàðòíîãî ïîòîêà îøèáîê çàïóùåííîé äî÷åðíåé çàäà÷è 

    Ñâîéñòâî ProcessID

    Â ñëåäóþùåì ïðèìåðå (ñöåíàðèé MakeCalc.js) ñâîéñòâî

    ProcessID
    èñïîëüçóåòñÿ äëÿ àêòèâèçàöèè ñòàíäàðòíîãî êàëüêóëÿòîðà Windows. Íàïîìíèì, ÷òî äëÿ ýòîé öåëè òàêæå ìîæíî ïðè âûçîâå ìåòîäà
    WshShell.AppActivate
    èñïîëüçîâàòü íàçâàíèå îêíà "Calculator".

    Ëèñòèíã 1.25. Àêòèâèçàöèÿ ïðèëîæåíèé ñ ïîìîùüþ PID

    /*****************************************************************/

    /* Èìÿ: MakeCalc.js                                              */

    /* ßçûê: JScript                                                 */

    /* Îïèñàíèå: Àêòèâèçàöèÿ ïðèëîæåíèé ñ ïîìîùüþ PID                */

    /*****************************************************************/

    var WshShell, theCalculator;

    //Ñîçäàåì îáúåêò WshShell

    WshShell = WScript.CreateObject("WScript.Shell");

    //Çàïóñêàåì êàëüêóëÿòîð

    theCalculator = WshShell.Exec("calc");

    //Ïðèîñòàíàâëèâàåì âûïîëíåíèå ñöåíàðèÿ äëÿ òîãî, ÷òîáû îêíî

    //êàëüêóëÿòîðà ïîÿâèëîñü íà ýêðàíå

    WScript.Sleep(500);

    //Àêòèâèçèðóåì îêíî êàëüêóëÿòîðà

    WshShell.AppActivate(theCalculator.ProcessID);

    //Ïîñûëàåì íàæàòèÿ êëàâèø â îêíî êàëüêóëÿòîðà

    WshShell.SendKeys("1{+}");

    WScript.Sleep(500);

    WshShell.SendKeys("2");

    WScript.Sleep(500);

    WshShell.SendKeys("~");

    /*************  Êîíåö *********************************************/
     

    Ñâîéñòâî Status

    Ïîñëå çàïóñêà äî÷åðíåãî ïðîöåññà ñöåíàðèé-ðîäèòåëü ïðîäîëæàåò âûïîëíÿòüñÿ àñèíõðîííî, ïîýòîìó íåîáõîäèìî óìåòü îïðåäåëÿòü, âûïîëíÿåòñÿ ëè åùå çàïóùåííàÿ çàäà÷à, èëè îíà óæå çàâåðøåíà. Äëÿ ýòîé öåëè èñïîëüçóåòñÿ ñâîéñòâî

    Status
    : åñëè çíà÷åíèå
    Status
    ðàâíî 0, òî ýòî îçíà÷àåò, ÷òî äî÷åðíèé ïðîöåññ íàõîäèòñÿ â ñòàäèè âûïîëíåíèÿ, åñëè
    Status
    ðàâíî 1, òî çàïóùåííàÿ çàäà÷à óæå çàâåðøåíà. Íàïðèìåð, â ðåçóëüòàòå âûïîëíåíèÿ ïðèâåäåííîãî â ëèñòèíãå 1.26 ñöåíàðèÿ ChildStatus.js íà ýêðàí âûâåäåòñÿ íåñêîëüêî ñòðîê "Êîìàíäà åùå âûïîëíÿåòñÿ" (ðèñ. 1.12).

    Ëèñòèíã 1.26. Êîíòðîëü ñîñòîÿíèÿ äî÷åðíåãî ïðîöåññà

    /*****************************************************************/

    /* Èìÿ: ChildStatus.js                                           */

    /* ßçûê: JScript                                                 */

    /* Îïèñàíèå: Êîíòðîëü ñîñòîÿíèÿ äî÷åðíåãî ïðîöåññà               */

    /*****************************************************************/

    var WshShell,theJob;

    //Ñîçäàåì îáúåêò WshShell

    WshShell=WScript.CreateObject("WScript.Shell");

    //Çàïóñêàåì äî÷åðíåå ïðèëîæåíèå

    theJob = WshShell.Exec("xcopy /?");

    for (;;) {

     if (theJob.status==1) //Ïðîâåðÿåì çàâåðøåíèå äî÷åðíåãî ïðîöåññà

      break;  //Âûõîäèì èç öèêëà

     else WScript.Echo("Êîìàíäà åùå âûïîëíÿåòñÿ");

    }

    WScript.Echo("Âûïîëíåíèå çàâåðøåíî");

    /*************  Êîíåö *********************************************/

    Ðèñ. 1.12. Ðåçóëüòàò âûïîëíåíèÿ ñöåíàðèÿ ChildStatus.js 

    Ñâîéñòâà StdOut, StdIn è StdErr

    Ðàáîòàòü c ïîòîêàìè

    StdOut
    ,
    StdIn
    è
    StdErr
    îáúåêòà
    WshScriptExec
    ìîæíî ñ ïîìîùüþ òåõ æå ìåòîäîâ, êîòîðûå ïðèìåíÿþòñÿ â îáúåêòå
    WScript
    äëÿ äîñòóïà ê ñîîòâåòñòâóþùèì ñòàíäàðòíûì ïîòîêàì (ñì. òàáë. 1.3). Íàïðèìåð, çàïóñòèâ ïðèâåäåííûé â ëèñòèíãå 1.27 ñöåíàðèé ConToWin.js ñ ïîìîùüþ wscript.exe, ìû âûâåäåì â ãðàôè÷åñêîå îêíî èíôîðìàöèþ î êëþ÷àõ ïðîãðàììû cscript.exe (ðèñ. 1.13).

    Ðèñ. 1.13. Ðåçóëüòàò âûïîëíåíèÿ ñöåíàðèÿ ConToWin.js


    Îòìåòèì, ÷òî çàïóñêàåìîå êîíñîëüíîå ïðèëîæåíèå cscript.exe âûâîäèò ñèìâîëû êèðèëëèöû â DOS-êîäèðîâêå, ïîýòîìó äëÿ âûâîäà òàêèõ ñèìâîëîâ â ãðàôè÷åñêîå îêíî èõ íóæíî ïðåîáðàçîâàòü â Windows-êîäèðîâêó.  ðàññìàòðèâàåìîì ñöåíàðèè ýòî äåëàåòñÿ ñ ïîìîùüþ ôóíêöèè DosToWin, êîòîðàÿ ïðåîáðàçóåò ïåðåäàííóþ â êà÷åñòâå ïàðàìåòðà ñòðîêó ñëåäóþùèì îáðàçîì: âñå ñèìâîëû êèðèëëèöû â ýòîé ñòðîêå ïåðåâîäÿòñÿ â Windows-êîäèðîâêó, îñòàëüíûå ñèìâîëû îñòàþòñÿ áåç èçìåíåíèé:

    function DosToWin(s) {

     var i,ss;  //Îáúÿâëÿåì ïåðåìåííûå

     //Ïðîâåðÿåì, ñîçäàí ëè îáúåêò RusDict

     if (typeof(RusDict)=="undefined")

      //Åñëè îáúåêò RusDict íå ñîçäàí, ñîçäàåì åãî

      MakeRusDict();

     ss="";

     for (i=0;i<s.length;i++) {  //Öèêë ïî âñåì ñèìâîëàì â ñòðîêå

      if (RusDict.Exists(s.charAt(i)))  //Ïðîâåðÿåì íàëè÷èå ñèìâîëà â ñëîâàðå

       //Ïðåîáðàçóåì i-é ñèìâîë â Windows-êîäèðîâêó

       ss+=RusDict.Item(s.charAt(i));

      else ss+=s.charAt(i);

     }

     return ss;

    }

    Îñíîâíûì â ôóíêöèè

    DosToWin
    ÿâëÿåòñÿ èñïîëüçîâàíèå îáúåêòà
    Dictionary
    ñ èìåíåì
    RusDict
    . Ýòîò îáúåêò ôîðìèðóåòñÿ â ôóíêöèè
    MakeRusDict
    è ñîäåðæèò ïàðû "êëþ÷"–"çía÷eíèe" äëÿ âñåõ áóêâ ðóññêîãî àëôàâèòà, ïðè÷åì â êà÷åñòâå êëþ÷à óêàçûâàåòñÿ áóêâà â DOS-êîäèðîâêå, à â êà÷åñòâå çíà÷åíèÿ — ñèìâîë ñ êîäîì, êîòîðûé ñîîòâåòñòâóåò ýòîé áóêâå â Windows-êîäèðîâêå.

    //Ôóíêöèÿ äëÿ ñîçäàíèÿ îáúåêòà Dictionary ñ ïàðàìè "êëþ÷-çíà÷åíèå", ãäå

    //"êëþ÷"-áóêâà â DOS-êîäèðîâêå, "çíà÷åíèå"- ñèìâîë, ñîîòâåòñòâóþùèé ýòîé

    //áóêâå â Windows-êîäèðîâêå

    function MakeRusDict() {

     //Ñîçäàåì îáúåêò Dictionary

     RusDict = WScript.CreateObject("Scripting.Dictionary");

     //Çàïîëíÿåì ïàðû "êëþ÷" (ñèìâîë â DOS-êîäèðîâêå)- "çíà÷åíèå" (ñèìâîë â

     //Window-êîäèðîâêå) äëÿ âñåõ áóêâ ðóññêîãî àëôàâèòà

     RusDict.add("€", "À"); RusDict.add("�", "Á"); RusDict.add("‚", "Â");

     RusDict.add("ƒ", "Ã"); RusDict.add("„", "Ä"); RusDict.add("…", "Å");

     RusDict.add("ð", "¨"); RusDict.add("†", "Æ"); RusDict.add("‡", "Ç");

     RusDict.add("ˆ", "È"); RusDict.add("‰", "É"); RusDict.add("Š", "Ê");

     RusDict.add("‹", "Ë"); RusDict.add("Œ", "Ì"); RusDict.add("�", "Í");

     RusDict.add("Ž", "Î"); RusDict.add("�", "Ï"); RusDict.add("�", "Ð");

     RusDict.add("‘", "Ñ"); RusDict.add("’", "Ò"); RusDict.add("“", "Ó");

     RusDict.add("”", "Ô"); RusDict.add("•", "Õ"); RusDict.add("–", "Ö");

     RusDict.add("—", "×"); RusDict.add("˜", "Ø"); RusDict.add("™", "Ù");

     RusDict.add("š", "Ú"); RusDict.add("›", "Û"); RusDict.add("œ", "Ü");

     RusDict.add("�", "Ý"); RusDict.add("ž", "Þ"); RusDict.add("Ÿ", "ß");

     RusDict.add(" ", "à"); RusDict.add("¡", "á"); RusDict.add("¢", "â");

     RusDict.add("£", "ã"); RusDict.add("¤", "ä"); RusDict.add("¥", "å");

     RusDict.add("ñ", "¸"); RusDict.add("¦", "æ"); RusDict.add("§", "ç");

     RusDict.add("¨", "è"); RusDict.add("©", "é"); RusDict.add("ª", "ê");

     RusDict.add("«", "ë"); RusDict.add("¬", "ì"); RusDict.add("­", "í");

     RusDict.add("®", "î"); RusDict.add("¯", "ï"); RusDict.add("à", "ð");

     RusDict.add("á", "ñ"); RusDict.add("â", "ò"); RusDict.add("ã", "ó");

     RusDict.add("ä", "ô"); RusDict.add("å", "õ"); RusDict.add("æ", "ö");

     RusDict.add("ç", "÷"); RusDict.add("è", "ø"); RusDict.add("é", "ù");

     RusDict.add("ê", "ú"); RusDict.add("ë", "û"); RusDict.add("ì", "ü");

     RusDict.add("í", "ý"); RusDict.add("î", "þ"); RusDict.add("ï", "ÿ");

    }

    Ëèñòèíã 1.27. Äîñòóï ê ïîòîêó StdOut äî÷åðíåãî ïðîöåññà

    /*****************************************************************/

    /* Èìÿ: ConToWin.js                                              */

    /* ßçûê: JScript                                                 */

    /* Êîäèðîâêà: DOS                                            */

    /* Îïèñàíèå: Äîñòóï ê ïîòîêó StdOut äî÷åðíåãî ïðîöåññà           */

    /*****************************************************************/

    var WshShell,theJob,s,IsBreak,RusDict;  //Îáúÿâëÿåì ïåðåìåííûå

    //Ôóíêöèÿ äëÿ ñîçäàíèÿ îáúåêòà Dictionary ñ ïàðàìè "êëþ÷-çíà÷åíèå", ãäå

    //"êëþ÷"-áóêâà â DOS-êîäèðîâêå, "çíà÷åíèå"- ñèìâîë, ñîîòâåòñòâóþùèé ýòîé

    //áóêâå â Windows-êîäèðîâêå

    function MakeRusDict() {

     //Ñîçäàåì îáúåêò Dictionary

     RusDict = WScript.CreateObject("Scripting.Dictionary");

     //Çàïîëíÿåì ïàðû "êëþ÷" (ñèìâîë â DOS-êîäèðîâêå)- "çíà÷åíèå" (ñèìâîë â

     //Window-êîäèðîâêå) äëÿ âñåõ áóêâ ðóññêîãî àëôàâèòà

     RusDict.add("€", "À"); RusDict.add("�", "Á"); RusDict.add("‚", "Â");

     RusDict.add("ƒ", "Ã"); RusDict.add("„", "Ä"); RusDict.add("…", "Å");

     RusDict.add("ð", "¨"); RusDict.add("†", "Æ"); RusDict.add("‡", "Ç");

     RusDict.add("ˆ", "È"); RusDict.add("‰", "É"); RusDict.add("Š", "Ê");

     RusDict.add("‹", "Ë"); RusDict.add("Œ", "Ì"); RusDict.add("�", "Í");

     RusDict.add("Ž", "Î"); RusDict.add("�", "Ï"); RusDict.add("�", "Ð");

     RusDict.add("‘", "Ñ"); RusDict.add("’", "Ò"); RusDict.add("“", "Ó");

     RusDict.add("”", "Ô"); RusDict.add("•", "Õ"); RusDict.add("–", "Ö");

     RusDict.add("—", "×"); RusDict.add("˜", "Ø"); RusDict.add("™", "Ù");

     RusDict.add("š", "Ú"); RusDict.add("›", "Û"); RusDict.add("œ", "Ü");

     RusDict.add("�", "Ý"); RusDict.add("ž", "Þ"); RusDict.add("Ÿ", "ß");

     RusDict.add(" ", "à"); RusDict.add("¡", "á"); RusDict.add("¢", "â");

     RusDict.add("£", "ã"); RusDict.add("¤", "ä"); RusDict.add("¥", "å");

     RusDict.add("ñ", "¸"); RusDict.add("¦", "æ"); RusDict.add("§", "ç");

     RusDict.add("¨", "è"); RusDict.add("©", "é"); RusDict.add("ª", "ê");

     RusDict.add("«", "ë"); RusDict.add("¬", "ì"); RusDict.add("­", "í");

     RusDict.add("®", "î"); RusDict.add("¯", "ï"); RusDict.add("à", "ð");

     RusDict.add("á", "ñ"); RusDict.add("â", "ò"); RusDict.add("ã", "ó");

     RusDict.add("ä", "ô"); RusDict.add("å", "õ"); RusDict.add("æ", "ö");

     RusDict.add("ç", "÷"); RusDict.add("è", "ø"); RusDict.add("é", "ù");

     RusDict.add("ê", "ú"); RusDict.add("ë", "û"); RusDict.add("ì", "ü");

     RusDict.add("í", "ý"); RusDict.add("î", "þ"); RusDict.add("ï", "ÿ");

    }

    //Ôóíêöèÿ äëÿ ïåðåâîäà ñòðîêè èç DOS- â Windows-êîäèðîâêó

    function DosToWin(s) {

     var i,ss;  //Îáúÿâëÿåì ïåðåìåííûå

     //Ïðîâåðÿåì, ñîçäàí ëè îáúåêò RusDict

     if (typeof(RusDict)=="undefined")

      //Åñëè îáúåêò RusDict íå ñîçäàí, ñîçäàåì åãî

      MakeRusDict();

     ss="";

     for (i=0;i<s.length;i++) {  //Öèêë ïî âñåì ñèìâîëàì â ñòðîêå

      if (RusDict.Exists(s.charAt(i)))  //Ïðîâåðÿåì íàëè÷èå ñèìâîëà â ñëîâàðå

       //Ïðåîáðàçóåì i-é ñèìâîë â Windows-êîäèðîâêó

       ss+=RusDict.Item(s.charAt(i));

      else ss+=s.charAt(i);

     }

     return ss;

    }

    /*************  Íà÷àëî *********************************************/

    //Ñîçäàåì îáúåêò WshShell

    WshShell=WScript.CreateObject("WScript.Shell");

    //Çàïóñêàåì äî÷åðíåå ïðèëîæåíèå

    theJob = WshShell.Exec("cscript");

    IsBreak=false;

    for (;;) {

     if (!theJob.StdOut.AtEndOfStream)

      //Ñ÷èòûâàåì âñþ èíôîðìàöèþ, íàõîäÿùóþñÿ â ïîòîêå StdOut

      //äî÷åðíåãî ïðîöåññà

      s+=theJob.StdOut.ReadAll();

     if (IsBreak) break;

     if (theJob.status==1) //Ïðîâåðÿåì, íå çàâåðøèëàñü ëè çàïóùåííàÿ çàäà÷à

      IsBreak=true;

     else WScript.Sleep(100);

    }

    //Ïðåîáðàçóåì ñôîðìèðîâàííûå ñòðîêè â Windows-êîäèðîâêó

    //è âûâîäèì èõ íà ýêðàí

    WScript.Echo(DosToWin(s));

    /*************  Êîíåö *********************************************/

    Òàêèì îáðàçîì, ìîæíî ñ ïîìîùüþ ìåòîäà Exec çàïóñòèòü óòèëèòó êîìàíäíîé ñòðîêè, ïåðåäàâàòü åé íóæíóþ âõîäíóþ èíôîðìàöèþ ñ ïîìîùüþ ñâîéñòâà StdIn è ñ ïîìîùüþ ñâîéñòâà StdOut ïîëó÷àòü è àíàëèçèðîâàòü âûäàâàåìûå ýòîé óòèëèòîé ñòðîêè (ñîîòâåòñòâóþùèå ïðèìåðû ïðèâåäåíû òàêæå â ëèñòèíãàõ 2.37 è 2.38).

    Îáúåêò WshController

    Îáúåêò

    WshController
    èìååò åäèíñòâåííûé ìåòîä
    CreateScript
    è ïðåäíàçíà÷åí äëÿ ñîçäàíèÿ îáúåêòà-ñöåíàðèÿ íà óäàëåííîé ìàøèíå.

    Çàìå÷àíèå

     ñèëó ñîîáðàæåíèé áåçîïàñíîñòè óäàëåííûå ñöåíàðèè ìîæíî çàïóñêàòü òîëüêî ñ ìàøèí, íà êîòîðûõ óñòàíîâëåíà îïåðàöèîííàÿ ñèñòåìà Windows NT/2000/XP; òî æå ñàìîå òðåáîâàíèå ïðåäúÿâëÿåòñÿ ê ìàøèíàì, íà êîòîðûõ äîëæíû âûïîëíÿòüñÿ òàêèå ñöåíàðèè. Êðîìå ýòîãî, ïîñëå íà÷àëüíîé óñòàíîâêè WSH ïî óìîë÷àíèþ âûïîëíåíèå óäàëåííûõ ñöåíàðèåâ çàïðåùåíî; äåéñòâèÿ, êîòîðûå íåîáõîäèìî ïðîèçâåñòè äëÿ ðàçðåøåíèÿ âûïîëíåíèÿ òàêèõ ñöåíàðèåâ, îïèñàíû â ãëàâå 2.

    Ñîçäàåòñÿ îáúåêò WshController ñëåäóþùèì îáðàçîì:

    var WshController=WScript.CreateObject("WshController");

    Çàìå÷àíèå

    Îáðàòèòå âíèìàíèå, ÷òî äëÿ îáúåêòà

    WshController
    ïðîãðàììíûì èäåíòèôèêàòîðîì (ProgID) ÿâëÿåòñÿ èìåííî ñòðîêà "
    WshController
    ", à íå ñòðîêà "
    WScript.WshController
    ", êàê óêàçàíî â áåòà-âåðñèè äîêóìåíòàöèè íà WSH 5.6.

    Ìåòîä

    CreateScript
    âîçâðàùàåò óêàçàòåëü íà îáúåêò
    WshRemote
    , ñ ïîìîùüþ êîòîðîãî ìîæíî êîíòðîëèðîâàòü ñîñòîÿíèå óäàëåííîãî ñöåíàðèÿ è óïðàâëÿòü åãî âûïîëíåíèåì. Ïðè âûïîëíåíèè ýòîãî ìåòîäà WSH ïîñëåäîâàòåëüíî ïðîèçâîäèò ñëåäóþùèå äåéñòâèÿ:

    ? ïîäãîòàâëèâàåò ôàéë ñî ñöåíàðèåì äëÿ ïåðåñûëêè íà óäàëåííóþ ñòàíöèþ;

    ? ñ ïîìîùüþ ïðîòîêîëà DCOM ñîçäàåò ýêçåìïëÿð îáúåêòà

    WshRemote
    íà óäàëåííîé ìàøèíå;

    ? ïåðåñûëàåò ñöåíàðèé íà óäàëåííóþ ñòàíöèþ äëÿ ïîñëåäóþùåãî âûïîëíåíèÿ ñ ïîìîùüþ ìåòîäà

    Execute
    îáúåêòà
    WshRemote
    .

    Ñèíòàêñèñ ìåòîäà

    CreateScript
    :

    CreateScript(CommandLine, [MachineName])

    Ïàðàìåòð

    CommandLine
    ñîäåðæèò êîìàíäíóþ ñòðîêó äëÿ çàïóñêà ñöåíàðèÿ, êîòîðûé äîëæåí áûòü âûïîëíåí íà óäàëåííîé ñòàíöèè. Ïóòü ê ñöåíàðèþ äîëæåí áûòü óêàçàí îòíîñèòåëüíî ëîêàëüíîé ìàøèíû, à íå îòíîñèòåëüíî òîé ñòàíöèè, íà êîòîðîé äîëæåí âûïîëíÿòüñÿ ñöåíàðèé. ×àùå âñåãî ýòîò ïóòü óêàçûâàåò íà ôàéë, íàõîäÿùèéñÿ íåïîñðåäñòâåííî íà ëîêàëüíîì êîìïüþòåðå, õîòÿ ìîæíî óêàçàòü ïóòü ê ñöåíàðèþ, çàïèñàííîìó íà êàêîì-ëèáî îáùåì ñåòåâîì ðåñóðñå (ýòî äåëàåò âîçìîæíûì, ðàáîòàÿ íà îäíîì êîìïüþòåðå, çàãðóæàòü ñöåíàðèé ñ äðóãîãî è âûïîëíÿòü ýòîò ñöåíàðèé íà òðåòüåì êîìïüþòåðå â ñåòè).

    Âòîðîé íåîáÿçàòåëüíûé ïàðàìåòð

    MachineName
    çàäàåò èìÿ êîìïüþòåðà, íà êîòîðîì äîëæåí áûòü çàïóùåí ñöåíàðèé. Åñëè ýòîò ïàðàìåòð íå óêàçàí, òî ñöåíàðèé áóäåò âûïîëíÿòüñÿ íà ëîêàëüíîé ìàøèíå.

    Îáúåêò WshRemote

    Îáúåêò

    WshRemote
    íåîáõîäèì äëÿ êîíòðîëÿ ñîñòîÿíèÿ ñöåíàðèåâ, êîòîðûå çàïóùåíû íà óäàëåííîé ìàøèíå. Â ðåçóëüòàòå çàïóñêà òàêîãî ñöåíàðèÿ íà óäàëåííîé ìàøèíå ñîçäàåòñÿ ïðîöåññ, ïîýòîìó ìîæíî ñêàçàòü, ÷òî ýêçåìïëÿðîì îáúåêòà
    WshRemote
    , ñîîòâåòñòâóþùåãî âûïîëíÿþùåìóñÿ ñöåíàðèþ, ÿâëÿåòñÿ ïðîöåññ. Ñîçäàåòñÿ
    WshRemote
    ñ ïîìîùüþ ìåòîäà
    CreateScript
    îáúåêòà
    WshController
    :

    var Controller,RemoteScript;

    Controller=WScript.CreateObject("WshController");

    RemoteScript=Controller.CreateScript("d: WscriptsWMyScript.js", "Server1");

    Îáúåêò

    WshRemote
    èìååò äâà ñâîéñòâà:
    Error
    è
    Status
    .

    Â ñâîéñòâå

    Error
    õðàíèòñÿ ññûëêà íà îáúåêò
    WshRemoteError
    , êîòîðûé ñîäåðæèò èíôîðìàöèþ îá îøèáêå, ïðèâåäøåé ê àâàðèéíîìó çàâåðøåíèþ ðàáîòû óäàëåííîãî ñöåíàðèÿ.

    ×èñëîâîå ñâîéñòâî

    Status
    ïîçâîëÿåò îïðåäåëèòü ñîñòîÿíèå ñöåíàðèÿ, ðàáîòàþùåãî àñèíõðîííî íà óäàëåííîé ìàøèíå. Âîçìîæíûå çíà÷åíèÿ ñâîéñòâà
    Status
    ïðèâåäåíû â òàáë. 1.19.


    Òàáëèöà 1.19. Çíà÷åíèÿ ïàðàìåòðà

    Status

    Çíà÷åíèå ×èñëîâîå çíà÷åíèå Îïèñàíèå
    NoTask
    0 Îáúåêò
    WshRemote
    , ñîîòâåòñòâóþùèé óäàëåííîìó ñöåíàðèþ, ñîçäàí, îäíàêî ñöåíàðèé åùå íå çàïóùåí
    Running
    1 Âûïîëíåíèå óäàëåííîãî ñöåíàðèÿ ïðîäîëæàåòñÿ
    Finished
    2 Óäàëåííûé ñöåíàðèé çàâåðøåí

    Äâà èìåþùèõñÿ ó îáúåêòà

    WshRemote
    ìåòîäà ïîçâîëÿþò ñîîòâåòñòâåííî çàïóñòèòü óäàëåííûé ñöåíàðèé (ìåòîä
    Execute
    ) èëè ïðèíóäèòåëüíî çàâåðøèòü åãî âûïîëíåíèå (ìåòîä
    Terminate
    ); îáà ýòè ìåòîäà íå èìåþò ïàðàìåòðîâ. Ìåòîä
    Terminate
    , ïîäîáíî îäíîèìåííîìó ìåòîäó îáúåêòà
    WshScriptExec
    , ïûòàåòñÿ çàêðûòü ïðèëîæåíèå, ïîñûëàÿ åìó ñîîáùåíèå
    WM_CLOSE
    (åñëè ýòî íå ñðàáàòûâàåò, ïðîöåññ çàâåðøàåòñÿ ïðèíóäèòåëüíî).

    Êðîìå ñâîéñòâ è ìåòîäîâ, îáúåêò WshRemote ìîæåò ãåíåðèðîâàòü òðè ñîáûòèÿ, êîòîðûå îïèñàíû â òàáë. 1.20.


    Òàáëèöà 1.20. Ñîáûòèÿ îáúåêòà

    WshRemote

    Ñîáûòèå Îïèñàíèå
    Start
    Âîçíèêàåò ïðè âûçîâå ìåòîäà
    Execute
    è ñèãíàëèçèðóåò ñåðâåðó ñöåíàðèåâ î íà÷àëå âûïîëíåíèÿ ñöåíàðèÿ íà óäàëåííîé ìàøèíå
    Error
    Âîçíèêàåò â òîì ñëó÷àå, êîãäà âûïîëíåíèå ñöåíàðèÿ íà óäàëåííîé ìàøèíå çàâåðøàåòñÿ àâàðèéíî
    End
    Âîçíèêàåò ïðè çàâåðøåíèè (íîðìàëüíîì èëè àâàðèéíîì) ðàáîòû ñöåíàðèÿ íà óäàëåííîé ìàøèíå

    Äëÿ îáðàáîòêè â ñöåíàðèÿõ ñîáûòèé, ïðèâåäåííûõ â òàáë. 1.20, íåîáõîäèìî ïîäêëþ÷èòüñÿ ê îáúåêòó WshRemote ñ ïîìîùüþ ìåòîäà ConnectObject îáúåêòà WScript (ëèñòèíã 1.28).

    Ëèñòèíã 1.28. Îáðàáîòêà ñîáûòèé îáúåêòà WshRemote (JScript)

    /**********************************************************************/

    /* Èìÿ: RemoteEvents.js                                               */

    /* ßçûê: JScript                                                      */

    /* Îïèñàíèå: Îáðàáîòêà ñîáûòèé, âîçíèêàþùèõ ïðè âûïîëíåíèè óäàëåííîãî */

    /*           ñöåíàðèÿ                                                 */

    /**********************************************************************/

    Var Controller,RemScript,IsQuit;  //Îáúÿâëÿåì ïåðåìåííûå

    //Ñîçäàåì îáúåêò WshController

    Controller = WScript.CreateObject("WshController");

    //Ñîçäàåì ñöåíàðèé íà óäàëåííîé ìàøèíå (îáúåêò WshRemote)

    RemScript = Controller.CreateScript("D:\RemoteScript.js ", "stand");

    //Óñòàíàâëèâàåì ñîåäèíåíèå ñ îáúåêòîì WshRemote

    WScript.ConnectObject(RemScript, "RemoteScript_");

    RemScript.Execute();  //Çàïóñêàåì óäàëåííûé ñöåíàðèé

    IsQuit = False;

    while (!IsQuit) WScript.Sleep(100);  //Ïðèîñòàíàâëèâàåì ñöåíàðèé íà 0,1 ñåê

    WScript.Quit();  //Âûõîäèì èç ñöåíàðèÿ

    /***************  Ôóíêöèè-îáðàáîò÷èêè ñîáûòèé  ***********************/

    function RemoteScript_End { //Ñîáûòèå End

     WScript.Echo("Âûïîëíåíèå óäàëåííîãî ñöåíàðèÿ çàâåðøåíî");

     IsQuit = True;

    }

    function RemoteScript_Error { //Ñîáûòèå Error

     //Âûâîäèì íà ýêðàí îïèñàíèå âîçíèêøåé îøèáêè

     WScript.Echo("Îøèáêà ïðè âûïîëíåíèè óäàëåííîãî ñöåíàðèÿ: " +

      RemScript.Error.Description);

     IsQuit = True;

    }

    function RemoteScript_Start { //Ñîáûòèå Start

     WScript.Echo("Óäàëåííûé ñöåíàðèé çàïóùåí");

    }

    /*************  Êîíåö *********************************************/

    Îáúåêò WshRemoteError

    Îáúåêò

    WshRemoteError
    ñîçäàåòñÿ àâòîìàòè÷åñêè ïðè âîçíèêíîâåíèè îøèáêè âî âðåìÿ âûïîëíåíèÿ ñöåíàðèÿ íà óäàëåííîé ìàøèíå è ñîäåðæèò èíôîðìàöèþ îá ýòîé îøèáêå. Ññûëêà íà îáúåêò
    WshRemoteError
    õðàíèòñÿ â ñâîéñòâå
    Error
    ñîîòâåòñòâóþùåãî îáúåêòà
    WshRemote
    .

    Ñâîéñòâà îáúåêòà

    WshRemoteError
    îïèñàíû â òàáë. 1.21 (ìåòîäîâ ó ýòîãî îáúåêòà íåò).


    Òàáëèöà 1.21. Ñâîéñòâà îáúåêòà

    WshRemoteError

    Ñâîéñòâî Îïèñàíèå
    Description
    Ñîäåðæèò êðàòêîå îïèñàíèå îøèáêè, êîòîðàÿ ïðèâåëà ê àâàðèéíîìó çàâåðøåíèþ ðàáîòû ñöåíàðèÿ. Åñëè äëÿ êàêîé-ëèáî îøèáêè îïèñàíèå íå ïðåäóñìîòðåíî,
    Description
    ñîäåðæèò ïóñòóþ ñòðîêó
    Line
    Îïðåäåëÿåò íîìåð ñòðîêè â ôàéëå ñöåíàðèÿ, â êîòîðîé ïðîèçîøëà îøèáêà. Åñëè äëÿ îøèáêè íåëüçÿ îïðåäåëèòü íîìåð ñòðîêè, â êîòîðîé îíà ïðîèçîøëà, â ñâîéñòâî
    Line
    çàïèñûâàåòñÿ 0
    Character
    Îïðåäåëÿåò íîìåð ñèìâîëà â ñòðîêå, â êîòîðîì ïðîèçîøëà îøèáêà. Åñëè äëÿ îøèáêè íåëüçÿ îïðåäåëèòü òî÷íóþ ïîçèöèþ, â êîòîðîé îíà âîçíèêëà, â ñâîéñòâî
    Character
    çàïèñûâàåòñÿ 0
    Number
    Ñîäåðæèò ÷èñëîâîé êîä îøèáêè
    SourceText
    Ñîäåðæèò â òåêñòîâîì âèäå ñòðîêó ñöåíàðèÿ, â êîòîðîé âîçíèêëà îøèáêà. Òàê êàê íå âñåãäà âîçìîæíî òî÷íî îïðåäåëèòü ñòðîêó, â êîòîðîé ïðîèçîøëà îøèáêà, òî èíîãäà çíà÷åíèåì ñâîéñòâà
    SourceText
    ìîæåò áûòü ïóñòàÿ ñòðîêà
    Source
    Ñîäåðæèò â ñèìâîëüíîì âèäå íàçâàíèå ÑÎÌ-îáúåêòà, îáðàùåíèå ê êîòîðîìó ïîñëóæèëî èñòî÷íèêîì îøèáîê

    Äëÿ ïîëó÷åíèÿ èíôîðìàöèè î âîçíèêøåé ïðè âûïîëíåíèè óäàëåííîãî ñöåíàðèÿ îøèáêå ìîæíî èñïîëüçîâàòü îáðàáîò÷èê ñîáûòèÿ

    Error
    îáúåêòà
    WshRemote
    ; ñîîòâåòñòâóþùèå ïðèìåðû ïðèâåäåíû â ëèñòèíãàõ 1.28, 2.56 è 2.57. 









    Ãëàâíàÿ | Êîíòàêòû | Íàø¸ë îøèáêó | Ïðèñëàòü ìàòåðèàë | Äîáàâèòü â èçáðàííîå

    Âñå ìàòåðèàëû ïðåäñòàâëåíû äëÿ îçíàêîìëåíèÿ è ïðèíàäëåæàò èõ àâòîðàì.