Arial Century Courier Georgia Tahoma Verdana Times New Roman
-
+
Список всех запущенных процессов
В следующих двух примерах мы будем работать с запущенными в операционной системе процессами.
Создадим сценарий 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="Запущенные процессы\n\n";
//Цикл по всем элементам коллекции
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="Запущенные процессы\n\n";
//Цикл по всем элементам коллекции
while (!Processes.atEnd) {
//Извлекаем текущий элемент коллекции (запущенный процесс)
Process=Processes.item;
//Формируем строку с именами процессов
SList+=Process.Name+"\n";
//Переходим к следующему элементу коллекции
Processes.moveNext;
}
//Выводим информацию на экран
WScript.Echo(SList);
/************* Конец *********************************************/
Закрытие всех экземпляров запущенного приложения