День добрый.
Написал или вернее переписал скрип, который отслеживает в системе определённые запущеные процессы и если такие есть, закрывает их. Вот он: var WMI, * * * * * //Экземпляр WMI SQuery, * * * // Текст запроса Processes, *// Коллекция процессов Process, * * *// Экзампляр коллекции //10 WshShell * *// Объект WshShell //Инициализация константы для диалоговых окон var vbCritical=16; // Создаём объект WshShell WshShell = WScript.CreateObject("WScript.Shell"); try { //Соединяемся с WMI WMI=GetObject("winMgmts:"); } catch (e) { // Обрабатываем возможные ошибки 20 if (e !=0) { //Выводим сообщение об ошибке Mess="Ошибка при соединении с WMI"; WshShell.Popup(Mess,0,"Ошибка",vbCritical); // Выходим из сценария WScript.Quit(); } } for (var icount = 1; icount>0;) { //Формируем текст запроса SQeury= "SELECT * FROM Win32_Process WHERE Name='PINBALL.exe'or Name='Sol.exe'"; //Создаём коллекцию-результат запроса Processes=new Enumerator(WMI.ExecQuery(SQeury)); //Цикл по всем элементам коллекции while (!Processes.atEnd()) { //Извлекаем текущй элемент коллекции (процесс с именем .....игра....) Process=Processes.item(); try { //Завершаем процесс Process.Terminate(); Mess="Попробуйте ещё раз !!!"; WshShell.Popup(Mess,0,"!!",vbCritical); } catch (e) { //Обрабатываем возможные ошибки if (e !=0) { //Выводим сообщение об ошибке Mess="Ошибка при закрытии текущего экземпляра"; WshShell.Popup(Mess,0,"Ошибка",vbCritical); } } //Переходим к следующему элементы коллекции Processes.moveNext(); } WScript.Sleep(1000); } В диспетчере процессов показано, что памяти он потребляет порядка 5 - 6 метров. Это много? Если да, то как минимизировать данный показатель? Спасибо. |
Это WSH занимает.
Тут ничего не поделаешь. Пиши на нормальном языке С, Pascal, Asm :) |
Спасибо
|
Время: 09:54. |
Время: 09:54.
© OSzone.net 2001-