Опубликован: 12.01.2008 | Уровень: специалист | Доступ: свободно
Лекция 5:

Собственная объектная модель WSH

< Лекция 4 || Лекция 5: 1234 || Лекция 6 >
Методы объекта WScript

Объект WScript имеет несколько методов, которые описаны в табл. 5.3.

Таблица 5.3. Методы объекта 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 число миллисекунд

Приведем дополнительные пояснения и примеры использования для методов, приведенных в табл. 5.3.

Метод 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);
Метод Echo

Параметры Arg1, Arg2, … метода Echo задают аргументы для вывода. Если сценарий был запущен с помощью wscript.exe, то метод Echo направляет вывод в диалоговое окно, если же для выполнения сценария применяется cscript.exe, то вывод будет направлен на экран (консоль). Каждый из аргументов при выводе будет разделен пробелом. В случае использования cscript.exe вывод всех аргументов будет завершен символом новой строки. Если в методе Echo не задан ни один аргумент, то будет напечатана пустая строка.

Например, после выполнения сценария EchoExample.vbs (листинг 5.3) с помощью cscript.exe на экран будут выведены пустая строка, три числа и строка текста.

'*******************************************************************
'* Имя: EchoExample.vbs                                            
'* Язык: VBScript                                                   
'* Описание: Использование метода WScript.Echo                     
'*******************************************************************
WScript.Echo            'Выводим пустую строку
WScript.Echo 1,2,3      'Выводим числа
WScript.Echo "Привет!"  'Выводим строку
'*************  Конец *********************************************
Листинг 5.3. Использование метода WScript.Echo
Метод Sleep

В следующем примере сценарий переводится в неактивное состояние на 5 секунд:

'*******************************************************************
'* Имя: SleepExample.vbs                                            
'* Язык: VBScript                                                   
'* Описание: Использование метода WScript.Sleep                     
'*******************************************************************
WScript.Echo "Сценарий запущен, отдыхаем…"
WScript.Sleep 5000
WScript.Echo "Выполнение сценария завершено"
'*************  Конец *********************************************
Листинг 5.4. Использование метода WScript.Sleep

Метод Sleep необходимо применять при асинхронной работе сценария и какой-либо другой задачи, например, при имитации нажатий клавиш в активном окне с помощью метода WshShell.SendKeys.

Объект WshShell

С помощью объекта WshShell можно запускать новый процесс, создавать ярлыки, работать с системным реестром, получать доступ к переменным среды и специальным папкам Windows. Создается этот объект следующим образом:

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

Объект WshShell имеет три свойства, которые приведены в табл. 5.4.

Таблица 5.4. Свойства объекта WshShell
Свойство Описание
CurrentDirectory Здесь хранится полный путь к текущему каталогу (к каталогу, из которого был запущен сценарий)
Environment Содержит объект WshEnvironment, который обеспечивает доступ к переменным среды операционной системы для Windows NT/2000/XP или к переменным среды текущего командного окна для Windows 9x
SpecialFolders Содержит объект WshSpecialFolders для доступа к специальным папкам Windows (рабочий стол, меню Пуск (Start) и т. д.)

Опишем теперь методы, имеющиеся у объекта WshShell (табл. 5.5).

Таблица 5.5. Методы объекта WshShell
Метод Описание
AppActivate(title) Активизирует заданное параметром title окно приложения. Строка title задает название окна (например, "calc" или "notepad" ) или идентификатор процесса ( Process ID, 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. Целочисленный параметр intType определяет тип сообщения, строка strMessage — текст сообщения. Параметр strTarget может задаваться только в Windows NT/2000/XP, он определяет название системы, в которой протоколируются события (по умолчанию это локальная система). Метод LogEvent возвращает true, если событие записано успешно и false в противном случае
Popup(strText,[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

Рассмотрим более подробно некоторые методы, приведенные в табл. 5.5.

Метод CreateShortcut

Этот метод позволяет создать новый или открыть уже существующий ярлык для изменения его свойств.

Приведем пример сценария, в котором создаются два ярлыка — на сам выполняемый сценарий (объект oShellLink ) и на сетевой ресурс ( oUrlLink ).

'*****************************************************************
'* Имя: MakeShortcuts.vbs                                        
'* Язык: VBScript                                                 
'* Описание: Создание ярлыков из сценария                        
'*****************************************************************
Dim WshShell,oShellLink,oUrlLink
' Создаем объект WshShell
Set WshShell=WScript.CreateObject("WScript.Shell")
' Создаем ярлык на файл
Set oShellLink=WshShell.CreateShortcut("Current Script.lnk")
' Устанавливаем путь к файлу
oShellLink.TargetPath=WScript.ScriptFullName
' Сохраняем ярлык
oShellLink.Save

' Создаем ярлык на сетевой ресурс
Set oUrlLink = WshShell.CreateShortcut("Microsoft Web Site.URL")
' Устанавливаем URL
oUrlLink.TargetPath = "http://www.microsoft.com"
' Сохраняем ярлык
oUrlLink.Save
'*************  Конец *********************************************
Листинг 5.5. Создание ярлыков из сценария (VBScript)
< Лекция 4 || Лекция 5: 1234 || Лекция 6 >
Валентина Тюрина
Валентина Тюрина
Нажатие кнопок в сторонних программах
Александр Тагильцев
Александр Тагильцев
Где проводится профессиональная переподготовка?
Анатолий Федоров
Анатолий Федоров
Россия, Москва
Игорь Ермачков
Игорь Ермачков
Латвия, Рига