Объект WshRemote
Объект 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("Удаленный сценарий запущен");
}
/************* Конец *********************************************/