Чтение онлайн

ЖАНРЫ

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
.

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

Поделиться с друзьями: