выполняем соответствующий SQL-запрос, текст которого предварительно заносится в переменную SQuery:

//Формируем текст запроса

SQuery='SELECT * FROM Wln32_Process WHERE Name='Notepad.exe''

//Создаем коллекцию-результат запроса

Processes=new Enumerator(WMI.ExecQuery(SQuery));

Теперь, имея коллекцию нужных нам процессов, мы в цикле while перебираем все ее элементы, вызывая для каждого элемента (запущенного экземпляра Блокнота) метод Terminate() , который завершает этот процесс:

//Цикл по всем элементам коллекции

while (!Processes.atEnd()) {

 //Извлекаем текущий элемент коллекции (процесс с именем Notepad.exe)

 Process=Processes.item();

 try {

  //Завершаем процесс

  Process.Terminate();

 } catch (e) {

  //Обрабатываем возможные ошибки if (e != 0) {

  //Выводим сообщение об ошибке

  Mess='Ошибка при закрытии текущего экземпляра';

  WshShell.Popup(Mess, 0, 'Закрытие всех Блокнотов', vbCritical);

 }

}

//Переходим к следующему элементу коллекции

Processes.moveNext();

Полностью текст сценария KillNotepads.js приведен в листинге 11.22.

Листинг 11.22. Закрытие всех запущенных экземпляров Блокнота

/********************************************************************/

/* Имя: KillNotepads.js                                             */

/* Язык: JScript                                                    */

/* Описание: Закрытие всех запущенных экземпляров Блокнота          */

/********************************************************************/

var

 WMI,       //Экземпляр WMI

 SQuery,    //Текст запроса

 Processes, //Коллекция процессов

 Process,   //Экземпляр коллекции

 WshShell;  //Объект WshShell

//Инициализируем константы для диалоговых окон

var vbCritical=16;

//Создаем объект WshShell

WshShell = WScript.CreateObject('WScript.Shell');

try {

 //Соединяемся с WMI

 WMI=GetObject('winMgmts:');

} catch (e) {  //Обрабатываем возможные ошибки

 if (e != 0) {

  //Выводим сообщение об ошибке

  Mess='Ошибка при соединении с WMI';

  WshShell.Popup(Mess,0,'Закрытие всех Блокнотов',vbCritical);

  //Выходим из сценария

  WScript.Quit();

 }

}

//Формируем текст запроса 

SQuery='SELECT * FROM Win32_Process WHERE Name='Notepad.exe''

//Создаем коллекцию-результат запроса

Processes=new Enumerator(WMI.ExecQuery(SQuery));

//Цикл по всем элементам коллекции

while (!Processes.atEnd()) {

 //Извлекаем текущий элемент коллекции (процесс с именем Notepad.exe)

 Process=Processes.item();

 try { 

  //Завершаем процесс

  Process.Terminate();

 } catch (e) {  //Обрабатываем возможные ошибки

  if (e != 0) {

   //Выводим сообщение об ошибке

   Mess='Ошибка при закрытии текущего экземпляра';

   WshShell.Popup(Mess,0,'Закрытие всех Блокнотов',vbCritical);

  }

 }

 //Переходим к следующему элементу коллекции 

 Processes.moveNext();

}

/*************  Конец *********************************************/

Заключение

Для того чтобы автоматизировать и существенно облегчить повседневную работу пользователей и администраторов компьютерных систем, базирующихся на Windows, следует использовать мощные возможности, которые предоставляет сервер сценариев Windows Script Host (WSH), позволяющий создавать полноценные сценарии, работающие непосредственно в операционной системе и использующие внешние объекты ActiveX.

Конечно, написание сценариев WSH по сравнению, скажем, с созданием командных файлов поначалу может показаться довольно непростой задачей — кроме знания специальных языков сценариев (например, VBScript или JScript) и представления об объектах ActiveX, нужно знать, по крайней мере, собственную объектную модель WSH и структуру объекта FileSystemObject. Однако с помощью этих средств уже можно писать сценарии, которые имеют полный доступ к файловой системе компьютера, системному реестру и ресурсам локальной сети.

Основным же назначением WSH является интеграция с помощью сценариев различных современных технологий компании Microsoft, предназначенных, например, для обеспечения доступа к настройкам операционной системы и установленного оборудования (Windows Management Instrumentation, WMI), базам

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату