Андрей Попов - Windows Script Host для Windows 2000/XP
Напомним, что операционная система 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.