Книга: Windows Script Host для Windows 2000/XP

Список всех запущенных процессов 

Список всех запущенных процессов 

В следующих двух примерах мы будем работать с запущенными в операционной системе процессами.

Создадим сценарий ListProcesses.js, который будет выводить на экран имена всех запущенных процессов (рис. 11.29).


Рис. 11.29. Список всех запущенных в системе процессов

Первое, что необходимо сделать в сценарии — подключиться к службе Windows Management service, т.е. создать корневой элемент WMI, который содержит в себе все остальные. 

Для этого в качестве параметра функции GetObject() указывается "winMgmts:"; в нашем примере мы соединяемся с WMI внутри блока try, что позволяет обработать возможные исключительные ситуации:

try {
 //Соединяемся с WMI
 WMI=GetObject("winMgmts:");
} catch (e) {
 //Обрабатываем возможные ошибки
 if (е != 0) {
  //Выводим сообщение об ошибке
  Mess="Ошибка при соединении с WMI";
  WshShell.Popup(Mess, 0, "Запущенные процессы", vbCritical);
  //Выходим из сценария
  WScript.Quit();
 }
}

Запущенным процессам соответствует класс Process схемы Win32. Коллекция всех процессов создается с помощью выполнения следующего SQL-запроса:

SELECT * FROM Win32 Process

Таким образом, можно сказать, что класс Win32_Process является аналогом таблицы базы данных; сам запрос выполняется с помощью метода ExecQuery():

Processes=new Enumerator(WMI.ExecQuery("SELECT * FROM Win32_Process"));

После создания коллекции мы просматриваем в цикле while все ее элементы, каждый из которых соответствует одному процессу, и добавляем имя процесса, хранящееся в свойстве Name, к переменной SList:

//Инициализируем строку SList
SList="Запущенные процессыnn";
//Цикл по всем элементам коллекции
while (!Processes.atEnd()) {
 //Извлекаем текущий элемент коллекции (запущенный процесс)
 Process=Processes.item();
 //Формируем строку с именами процессов
 SList+=Process.Name+"n";
 //Переходим к следующему элементу коллекции
 Processes.moveNext();
}

После выхода из цикла переменная SInfo выводится на экран с помощью метода Echo() объекта WScript:

WScript.Echo(SInfo);

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

Листинг 11.21. Вывод на экран списка всех запущенных процессов

/********************************************************************/
/* Имя: ListProcesses.js                                            */
/* Язык: JScript                                                    */
/* Описание: Вывод на экран списка всех запущенных на локальной     */
/*           рабочей станции процессов                              */
/********************************************************************/
var
 WMI,       //Экземпляр WMI
 Processes, //Коллекция процессов
 Process,   //Экземпляр коллекции
 SList;     //Строка для вывода на экран
//Инициализируем константы для диалоговых окон
var vbCritical=16;
try  {
 //Соединяемся с WMI
 WMI=GetObject("winMgmts:");
} catch (e) {  //Обрабатываем возможные ошибки
 if (e != 0) {
  //Выводим сообщение об ошибке
  Mess="Ошибка при соединении с WMI";
  WshShell.Popup(Mess,0,"Запущенные процессы",vbCritical);
  //Выходим из сценария
  WScript.Quit();
 }
}
//Создаем коллекцию всех запущенных процессов
Processes=new Enumerator(WMI.ExecQuery("SELECT * FROM Win32_Process"));
//Инициализируем строку SList
SList="Запущенные процессыnn";
//Цикл по всем элементам коллекции
while (!Processes.atEnd()) {
 //Извлекаем текущий элемент коллекции (запущенный процесс)
 Process=Processes.item();
 //Формируем строку с именами процессов
 SList+=Process.Name+"n";
 //Переходим к следующему элементу коллекции
 Processes.moveNext();
}
//Выводим информацию на экран
WScript.Echo(SList);
/*************  Конец *********************************************/

Оглавление книги


Генерация: 1.247. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз