объекта, а затем соединиться с ним при помощи метода ConnectObject
, указав нужный префикс для функций-обработчиков:
Controller = WScript.CreateObject('WshController');
RemScript = Controller.CreateScript('D:\RemoteScript.js ', 'stand');
WScript.ConnectObject(RemScript, 'RemoteScript_');
Затем в тексте сценария описываются функции RemoteScript_Start
, RemoteScript_Error
и RemoteScript_End
, управление в которые будет передаваться при наступлении соответствующих событий.
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('Удаленный сценарий запущен');
}
/************* Конец *********************************************/
'********************************************************************
' Имя: RemoteEvents.vbs
' Язык: VBScript
' Описание: Обработка событий, возникающих при выполнении удаленного
' сценария
'********************************************************************
Option Explicit
Dim Controller,RemScript,IsQuit ' Объявляем переменные
' Создаем объект WshController
Set Controller = CreateObject('WshController')
' Создаем сценарий на удаленной машине (объект WshRemote)
Set RemScript = Controller.CreateScript('D:RemoteScript.js ', 'stand')
' Устанавливаем соединение с объектом WshRemote
WScript.ConnectObject RemScript, 'RemoteScript_'
RemScript.Execute ' Запускаем удаленный сценарий
IsQuit = False
While Not IsQuit
WScript.Sleep 100 ' Приостанавливаем сценарий на 0,1 сек
Wend
WScript.Quit ' Выходим из сценария
'*************** Функции-обработчики событий ***********************
Function RemoteScript_End() ' Событие End
WScript.Echo 'Выполнение удаленного сценария завершено'
IsQuit = True
End Function
Function RemoteScript_Error() ' Событие Error
' Выводим на экран описание возникшей ошибки
WScript.Echo 'Ошибка при выполнении удаленного сценария: ' & _
RemScript.Error.Description
IsQuit = True
End Function
Function RemoteScript_Start() ' Событие Start
WScript.Echo 'Удаленный сценарий запущен'
End Function
'************* Конец *********************************************
При контроле за ходом выполнения удаленного сценария с помощью обработки событий объекта WshRemote
затрачивается больше ресурсов компьютера по сравнению с простой проверкой свойства Status
. Кроме этого, при обработке событий увеличивается сетевой трафик между локальной и удаленной машинами.
Глава 3
Сценарии WSH как приложения XML
До сих пор мы рассматривали простые одиночные файлы сценариев, в которых мог использоваться язык JScript или VBScript. В версии WSH 1.0 это был единственный поддерживаемый тип сценариев, причем используемый язык определялся по расширению файла: js для JScript и vbs для VBScript. Начиная с WSH 2.0 появилась возможность создавать сценарии, в которых можно применять оба языка одновременно. Для таких сценариев в операционной системе регистрируется расширение wsf; wsf-файлы мы будем далее называть просто WS-файлами. Новый тип сценариев (WS-файл) имеет еще несколько важных преимуществ перед одиночными файлами сценариев WSH 1.0: