Вопрос по лекции 7, где рассматривается взаимодействие со сторонними программами, в том числе эмуляция нажатия кнопок клавиатуры WshShell.SendKeys. Вопрос в том что во время автоматизации может потребоваться не нажатие клавиатуры, а нажатие кнопок в сообщениях этих программ. Можно вытащить информацию о объекте (кнопке) скажем с помощью AutoIt Info, или ориентироваться скажем на текст на кнопке..., но как на эту кнопку нажать? (без обхода по клавиатуре) |
Типичные администраторские сценарии WMI
Вывод списка команд, выполняемых при загрузке системы
Все команды, которые выполняются автоматически при старте системы, хранятся в WMI в виде экземпляров класса Win32_StartupCommand. Сценарий StartupCommand.vbs, представленный в листинге 13.5, выводит эти команды на экран.
'******************************************************************* ' Имя: StartupCommand.vbs ' Язык: VBScript ' Описание: Вывод списка команд, выполняемых при загрузке компьютера '******************************************************************* Option Explicit ' Объявляем переменные Dim strComputer ' Имя компьютера Dim strNamespace ' Имя пространства имен Dim strClass ' Имя класса Dim objClass ' Объект SWbemObject (класс WMI) Dim colStartupCommands' Коллекция экземпляров класса WMI Dim objStartupCommand ' Элемент коллекции Dim strResult ' Строка для вывода на экран '********************** Начало ************************************* ' Присваиваем начальные значения переменным strComputer = "." strNamespace = "Root\CIMV2" strClass = "Win32_StartupCommand" strResult = "Комманды выполняемые при загрузке компьютера :" & VbCrLf ' Получаем указатель на класс WMI Set objClass = GetObject("WinMgmts:\\" & strComputer & _ "\" & strNamespace & ":" & strClass) ' Создаем коллекцию экземпляров класса Win32_StartupCommand Set colStartupCommands = objClass.Instances_ ' Перебираем элементы коллекции For Each objStartupCommand in colStartupCommands strResult = strResult & objStartupCommand.Command & VbCrLf Next ' Выводим результат на экран Wscript.Echo strResult '************************* Конец ***********************************Листинг 13.5. Определение команд, выполняемых при загрузке компьютера
Вывод свойств операционной системы
Основные свойства установленной операционной системы (загрузочное устройство, номер сборки, дата установки и т. д.) можно получить с помощью объекта Win32_OperatingSystem (листинг 13.6).
'******************************************************************* ' Имя: OSProperty.vbs ' Язык: VBScript ' Описание: Вывод свойств операционной системы '******************************************************************* Option Explicit ' Объявляем переменные Dim strComputer ' Имя компьютера Dim strNamespace ' Имя пространства имен Dim strClass ' Имя класса Dim objClass ' Объект SWbemObject (класс WMI) Dim colOperatingSystems' Коллекция экземпляров класса WMI Dim objOperatingSystem ' Элемент коллекции Dim strResult ' Строка для вывода на экран '********************** Начало ************************************* ' Присваиваем начальные значения переменным strComputer = "." strNamespace = "Root\CIMV2" strClass = "Win32_OperatingSystem" strResult = " Свойства операционной системы: " & VbCrLf & VbCrLf ' Получаем указатель на класс WMI Set objClass = GetObject("WinMgmts:\\" & strComputer & _ "\" & strNamespace & ":" & strClass) ' Создаем коллекцию экземпляров класса Win32_OperatingSystem Set colOperatingSystems = objClass.Instances_ ' Перебираем элементы коллекции For Each objOperatingSystem in colOperatingSystems ' Формирум строку для вывода на экран strResult = strResult & "Boot Device: " & _ objOperatingSystem.BootDevice & VbCrLf strResult = strResult & "Build Number: " & _ objOperatingSystem.BuildNumber & VbCrLf strResult = strResult & "Build Type: " & _ objOperatingSystem.BuildType & VbCrLf strResult = strResult & "Caption: " & _ objOperatingSystem.Caption & VbCrLf strResult = strResult & "Code Set: " & _ objOperatingSystem.CodeSet & VbCrLf strResult = strResult & "Country Code: " & _ objOperatingSystem.CountryCode & VbCrLf strResult = strResult & "Install Date: " & _ objOperatingSystem.InstallDate & VbCrLf strResult = strResult & "Licensed Users: " & _ objOperatingSystem.NumberOfLicensedUsers & VbCrLf strResult = strResult & "Organization: " & _ objOperatingSystem.Organization & VbCrLf strResult = strResult & "OS Language: " & _ objOperatingSystem.OSLanguage & VbCrLf strResult = strResult & "OS Product Suite: " & _ objOperatingSystem.OSProductSuite & VbCrLf strResult = strResult & "OS Type: " & _ objOperatingSystem.OSType & VbCrLf strResult = strResult & "Primary: " & _ objOperatingSystem.Primary & VbCrLf strResult = strResult & "Registered User: " & _ objOperatingSystem.RegisteredUser & VbCrLf strResult = strResult & "Serial Number: " & _ objOperatingSystem.SerialNumber & VbCrLf strResult = strResult & "Version: " & _ objOperatingSystem.Version & VbCrLf Next ' Выводим результат на экран Wscript.Echo strResult '************************* Конец ***********************************Листинг 13.6. Вывод свойств операционной системы
Определение номера последнего обновления, установленного на компьютере
Сценарий ServPack.vbs, приведенный в листинге 13.7, выводит на экран номер последнего обновления (ServicePack), которое было установлено на компьютере (свойства ServicePackMajorVersion и ServicePackMinorVersion объекта Win32_OperatingSystem ).
'******************************************************************* ' Имя: ServPack.vbs ' Язык: VBScript ' Описание: Вывод номера ServicePack для операционной системы '******************************************************************* Option Explicit ' Объявляем переменные Dim strComputer ' Имя компьютера Dim strNamespace ' Имя пространства имен Dim strClass ' Имя класса Dim objClass ' Объект SWbemObject (класс WMI) Dim colOperatingSystems ' Коллекция экземпляров класса WMI Dim objOperatingSystem ' Элемент коллекции Dim strResult ' Строка для вывода на экран '********************** Начало ************************************* ' Присваиваем начальные значения переменным strComputer = "." strNamespace = "Root\CIMV2" strClass = "Win32_OperatingSystem" strResult = "ServicePack установленный на этом компьютере " & VbCrLf ' Получаем указатель на класс WMI Set objClass = GetObject("WinMgmts:\\" & strComputer & _ "\" & strNamespace & ":" & strClass) ' Создаем коллекцию экземпляров класса Win32_OperatingSystem Set colOperatingSystems = objClass.Instances_ ' Перебираем элементы коллекции For Each objOperatingSystem in colOperatingSystems ' Формируем строку для вывода на экран strResult = strResult & "№ " & _ objOperatingSystem.ServicePackMajorVersion & "." &_ objOperatingSystem.ServicePackMinorVersion & VbCrLf Next ' Выводим результирущую строку на экран Wscript.Echo strResult '************************* Конец ***********************************Листинг 13.7. Определение номера последнего обновления
Сбор сведений о подключенных устройствах
С помощью сценариев WMI можно быстро собрать информацию о параметрах и характеристиках различных устройств компьютера (процессор, память, клавиатура, мышь, параллельные и последовательные порты, звуковая и видеокарта, сетевой адаптер и т. д.). В листингах 13.8, 13.9 приведены примеры таких сценариев.
Получение информации о физической памяти
Получить информацию о банках физической памяти компьютера позволяют экземпляры класса Win32_PhysicalMemory. Сценарий MemoryInfo.vbs (листинг 13.8) выводит на экран наиболее важные свойства этих экземпляров.
'******************************************************************* ' Имя: MemoryInfo.vbs ' Язык: VBScript ' Описание: Вывод информации о физической памяти '******************************************************************* Option Explicit ' Объявляем переменные Dim strComputer ' Имя компьютера Dim strNamespace ' Имя пространства имен Dim strClass ' Имя класса Dim objClass ' Объект SWbemObject (класс WMI) Dim colPhysMemory ' Коллекция экземпляров класса WMI Dim objPhysMemory ' Элемент коллекции Dim strResult ' Результирующая строка '********************** Начало ************************************* ' Присваиваем начальные значения переменным strComputer = "." strNamespace = "Root\CIMV2" strClass = "Win32_PhysicalMemory" strResult = "Информация о физической памяти:" & vbCrLf & vbCrLf ' Получаем указатель на класс WMI Set objClass = GetObject("WinMgmts:\\" & strComputer & _ "\" & strNamespace & ":" & strClass) ' Создаем коллекцию экземпляров класса Win32_PhysicalMemory Set colPhysMemory = objClass.Instances_ ' Перебираем коллекцию For Each objPhysMemory In colPhysMemory strResult = strResult & "Bank Label: " & _ objPhysMemory.BankLabel & VbCrLf strResult = strResult & "Capacity: " & _ objPhysMemory.Capacity & VbCrLf strResult = strResult & "Data Width: " & _ objPhysMemory.DataWidth & VbCrLf strResult = strResult & "Description: " & _ objPhysMemory.Description & VbCrLf strResult = strResult & "Device Locator: " & _ objPhysMemory.DeviceLocator & VbCrLf strResult = strResult & "Form Factor: " & _ objPhysMemory.FormFactor & VbCrLf strResult = strResult & "Hot Swappable: " & _ objPhysMemory.HotSwappable & VbCrLf strResult = strResult & "Manufacturer: " & _ objPhysMemory.Manufacturer & VbCrLf strResult = strResult & "Memory Type: " & _ objPhysMemory.MemoryType & VbCrLf strResult = strResult & "Name: " & _ objPhysMemory.Name & VbCrLf strResult = strResult & "Part Number: " & _ objPhysMemory.PartNumber & VbCrLf strResult = strResult & "Speed: " & _ objPhysMemory.Speed & VbCrLf strResult = strResult & "Tag: " & _ objPhysMemory.Tag & VbCrLf strResult = strResult & "Type Detail: " & _ objPhysMemory.TypeDetail & VbCrLf Next ' Выводим результат на экран Wscript.Echo strResult '************************* Конец ***********************************Листинг 13.8. Вывод информации о физической памяти
Получение информации о сетевом адаптере
В сценарии NetworkAdapterInfo.vbs (листинг 13.9) свойства сетевых адаптеров извлекаются с помощью класса Win32_NetworkAdapter. Отметим, что с помощью сценариев WMI можно также изменять конфигурацию сетевых карт — для этого следует использовать класс Win32_NetworkAdapterConfiguration, который предоставляет множество методов для настройки сетевых служб DNS, DHCP, WINS.
'******************************************************************* ' Имя: NetworkAdapterInfo.vbs ' Язык: VBScript ' Описание: Вывод информации о сетевых адаптерах '******************************************************************* Option Explicit ' Объявляем переменные Dim strComputer ' Имя компьютера Dim strNamespace ' Имя пространства имен Dim objService ' Объект SWbemServices Dim colNetworkAdapters ' Коллекция экземпляров класса WMI Dim objNetworkAdapter ' Элемент коллекции Dim strResult ' Результирующая строка Dim WshShell ' Объект WshShell Dim theNotepad ' Объект WshScriptExec ' Объявляем константы Const wbemFlagForwardOnly = 32 Const wbemFlagReturnImmediately = 16 Const ForWriting = 2 ' Процедура для записи информации в файл Sub TextOut (Text, File) ' Объявляем переменные Dim objFSO, FOut ' Создаем объект FileSystemObject Set objFSO=WScript.CreateObject("Scripting.FileSystemObject") ' Открываем выходной файл для записи Set FOut = objFSO.OpenTextFile (File,ForWriting,true) ' Записываем текстовую строку в файл FOut.WriteLine Text ' Закрываем выходной файл FOut.Close End Sub '********************** Начало ************************************* ' Присваиваем начальные значения переменным strComputer = "." strNamespace = "Root\CIMV2" strResult = "Зарегистрированные сетевые адаптеры " & VbCrLf & VbCrLf ' Подключаемся к пространству имен WMI Set objService = GetObject("WinMgmts:\\" & _ strComputer & "\" & strNamespace) Set colNetworkAdapters = objService.ExecQuery(_ "SELECT * FROM Win32_NetworkAdapter",,_ wbemFlagReturnImmediately+wbemFlagForwardOnly) ' Перебираем элементы коллекции For Each objNetworkAdapter In colNetworkAdapters strResult = strResult & "Adapter Type: " & _ objNetworkAdapter.AdapterType & VbCrLf &_ "Description: " & objNetworkAdapter.Description & vbCrLf &_ "Installed: " & objNetworkAdapter.Installed & vbCrLf &_ "Manufacturer: " & objNetworkAdapter.Manufacturer & vbCrLf &_ "Product Name: " & objNetworkAdapter.ProductName & vbCrLf &_ "Net Connection ID: " & objNetworkAdapter.NetConnectionID & vbCrLf &_ "Net Connection Status: " & _ objNetworkAdapter.NetConnectionStatus & vbCrLf & _ "MAC Address: " & objNetworkAdapter.MACAddress & vbCrLf &_ "PNP Device ID" & objNetworkAdapter.PNPDeviceID Next ' Выводим результат в текстовый файл TextOut strResult, "C:\NetworkAdapters.txt" 'Создаем объект WshShell Set WshShell = WScript.CreateObject("WScript.Shell") 'Открываем созданный файл в Блокноте Set theNotepad = WshShell.Exec("notepad " & "C:\NetworkAdapters.txt" ) '************************* Конец ***********************************Листинг 13.9. Вывод информации о сетевых адаптерах
Управление службами и процессами
В листингах 13.10–13.14 приведены сценарии, с помощью которых можно управлять процессами и службами Windows. Подобные сценарии особенно удобно применять для выполнения групповых операций, например, при необходимости запустить все приостановленные службы или завершить все процессы с определенным именем.
Получение информации о свойствах и состоянии служб
Сценарий ServicesInfo.vbs, приведенный в листинге 13.10, выводит информацию о зарегистрированных службах (экземпляры класса Win32_Service ) в текстовый файл C:\Services.txt, который затем открывается с помощью Блокнота.
'******************************************************************* ' Имя: ServicesInfo.vbs ' Язык: VBScript ' Описание: Вывод информации о службах '******************************************************************* Option Explicit ' Объявляем переменные Dim strComputer ' Имя компьютера Dim strNamespace ' Имя пространства имен Dim objWMIService ' Объект SWbemServices Dim colServices ' Коллекция экземпляров класса WMI Dim objService ' Элемент коллекции Dim strResult ' Результирующая строка Dim WshShell ' Объект WshShell Dim theNotepad ' Объект WshScriptExec ' Объявляем константы Const wbemFlagForwardOnly = 32 Const wbemFlagReturnImmediately = 16 Const ForWriting = 2 ' Функция для записи информации в файл Sub TextOut (Text, File) ' Объявляем переменные Dim objFSO, FOut ' Создаем объект FileSystemObject Set objFSO=WScript.CreateObject("Scripting.FileSystemObject") ' Открываем выходной файл для записи Set FOut = objFSO.OpenTextFile (File,ForWriting,true) ' Записываем текстовую строку в файл FOut.WriteLine Text ' Закрываем выходной файл FOut.Close End Sub '********************** Начало ************************************* ' Присваиваем начальные значения переменным strComputer = "." strNamespace = "Root\CIMV2" strResult = "Информация о службах " & VbCrLf & VbCrLf ' Подключаемся к пространству имен WMI Set objWMIService = GetObject("WinMgmts:\\" & _ strComputer & "\" & strNamespace) Set colServices = objWMIService.ExecQuery("SELECT * FROM Win32_Service"_ ,, wbemFlagReturnImmediately+wbemFlagForwardOnly) For Each objService In colServices strResult = strResult & "Name: " & _ objService.Name & VbCrLf strResult = strResult & "Display Name: " & _ objService.DisplayName & VbCrLf strResult = strResult & "Caption: " & _ objService.Caption & VbCrLf strResult = strResult & "Description: " & _ objService.Description & VbCrLf strResult = strResult & "Path Name: " & _ objService.PathName & VbCrLf strResult = strResult & "ServiceType: " & _ objService.ServiceType & VbCrLf strResult = strResult & "Status: " & _ objService.Status & VbCrLf strResult = strResult & "State: " & _ objService.State & VbCrLf strResult = strResult & "Started: " & _ objService.Started & VbCrLf strResult = strResult & "Start Mode: " & _ objService.StartMode & VbCrLf strResult = strResult & "Start Name: " & _ objService.StartName & VbCrLf strResult = strResult & "Accept pause: " & _ objService.AcceptPause & VbCrLf strResult = strResult & "Accept stop: " & _ objService.AcceptStop & VbCrLf strResult = strResult & "********************************" & VbCrLf &_ VbCrLf Next ' Выводим результат в текстовый файл TextOut strResult, "C:\Services.txt" 'Создаем объект WshShell Set WshShell = WScript.CreateObject("WScript.Shell") 'Открываем созданный файл в Блокноте Set theNotepad = WshShell.Exec("notepad " & "C:\Services.txt" ) '************************* Конец ***********************************Листинг 13.10. Вывод информации о всех службах Windows
Запуск и восстановление работы служб
В сценарии StartStoppedServices.vbs, описанном в листинге 13.11, производится запуск всех остановленных служб (с состоянием Stopped), которые должны стартовать автоматически при запуске системы.
'******************************************************************* ' Имя: StartStoppedServices.vbs ' Язык: VBScript ' Описание: Запуск остановленных служб '******************************************************************* Option Explicit ' Объявляем переменные Dim strComputer ' Имя компьютера Dim strNamespace ' Имя пространства имен Dim objWMIService ' Объект SWbemServices Dim colServices ' Коллекция экземпляров класса WMI Dim objService ' Элемент коллекции Dim strResult ' Результирующая строка Dim WshShell ' Объект WshShell Dim Res '********************** Начало ************************************* ' Присваиваем начальные значения переменным strComputer = "." strNamespace = "Root\CIMV2" ' Подключаемся к пространству имен WMI Set objWMIService = GetObject("WinMgmts:\\" & _ strComputer & "\" & strNamespace) ' Формируем коллекцию остановленных служб Set colServices = objWMIService.ExecQuery _ ("SELECT * FROM Win32_Service WHERE State = 'Stopped' and StartMode = " _ & "'Auto'") ' Создаем объект WshShell Set WshShell = WScript.CreateObject("WScript.Shell") ' Запрос на запуск служб Res = WshShell.Popup("Запустить все остановленные службы?",0, _ "Работа со службами Windows",vbQuestion+vbYesNo) If Res=vbYes Then ' Запускаем каждую остановленную службу For Each objService In colServices objService.StartService() Next WScript.Echo "Все остановленные службы запущены" End If '************************* Конец ***********************************Листинг 13.11. Запуск всех остановленных служб
Сценарий ResumePausedServices.vbs, приведенный в листинге 13.12, восстанавливает работу всех приостановленных служб (с состоянием Paused), которые должны стартовать автоматически при запуске системы.
'******************************************************************* ' Имя: ResumePausedServices.vbs ' Язык: VBScript ' Описание: Продолжение работы приостановленных служб '******************************************************************* Option Explicit ' Объявляем переменные Dim strComputer ' Имя компьютера Dim strNamespace ' Имя пространства имен Dim objWMIService ' Объект SWbemServices Dim colServices ' Коллекция экземпляров класса WMI Dim objService ' Элемент коллекции Dim strResult ' Результирующая строка Dim WshShell ' Объект WshShell Dim Res '********************** Начало ************************************* ' Присваиваем начальные значения переменным strComputer = "." strNamespace = "Root\CIMV2" ' Подключаемся к пространству имен WMI Set objWMIService = GetObject("WinMgmts:\\" & _ strComputer & "\" & strNamespace) ' Формируем коллекцию остановленных служб Set colServices = objWMIService.ExecQuery _ ("SELECT * FROM Win32_Service WHERE State = 'Paused' and StartMode = " _ & "'Auto'") ' Создаем объект WshShell Set WshShell = WScript.CreateObject("WScript.Shell") ' Запрос на запуск служб Res = WshShell.Popup("Возобновить работу всех приостановленных служб?"_ ,0, "Работа со службами Windows",vbQuestion+vbYesNo) If Res=vbYes Then ' Возобновляем каждую приостановленную службу For Each objService In colServices objService.ResumeService() Next WScript.Echo "Работа всех приостановленных служб возобновлена" End If '************************* Конец ***********************************Листинг 13.12. Продолжение работы всех приостановленных служб
Завершение процессов
В сценарии KillProcess.vbs, описанном в листинге 13.13, на примере Блокнота (Notepad.exe) показано, каким образом можно принудительно завершить работу запущенных процессов (для этого используется метод Terminate соответствующего объекта Win32_Process ).
'******************************************************************* ' Имя: KillProcess.vbs ' Язык: VBScript ' Описание: Завершение запущенного процесса '******************************************************************* Option Explicit ' Объявляем переменные Dim strComputer ' Имя компьютера Dim strNamespace ' Имя пространства имен Dim objService ' Объект SWbemServices Dim colProcesses ' Коллекция экземпляров класса WMI Dim objProcess ' Элемент коллекции Dim WshShell ' Объект WshShell Dim Res '********************** Начало ************************************* ' Присваиваем начальные значения переменным strComputer = "." strNamespace = "Root\CIMV2" ' Подключаемся к пространству имен WMI Set objService = GetObject("WinMgmts:\\" & _ strComputer & "\" & strNamespace) 'Создаем объект WshShell Set WshShell = WScript.CreateObject("WScript.Shell") ' Формируем коллекцию процессов NOTEPAD.EXE Set colProcesses = objService.ExecQuery(_ "SELECT * FROM Win32_Process WHERE Name='NOTEPAD.EXE'") 'Запрос на завершение работы всех Блокнотов Res=WshShell.Popup("Завершить работу всех Блокнотов?",0,_ "Работа с процессами",vbQuestion+vbYesNo) ' Проверяем введенное значение If Res=vbYes Then 'Перебираем коллекцию For Each objProcess in colProcesses ' Завершаем приложение objProcess.Terminate() Next End If '************************* Конец ***********************************Листинг 13.13. Принудительное завершение запущенного процесса
Получение информации о процессах
Сценарий ProcessInfo.vbs, приведенный в листинге 13.14, для всех запущенных процессов (экземпляры класса Win32_Process ) выводит в текстовый файл C:\Process.txt значения некоторых наиболее важных с точки зрения администратора параметров. Сформированный файл затем открывается с помощью Блокнота.
'******************************************************************* ' Имя: ProcessInfo.vbs ' Язык: VBScript ' Описание: Вывод свойств запущенных процессов '******************************************************************* Option Explicit ' Объявляем переменные Dim strComputer ' Имя компьютера Dim strNamespace ' Имя пространства имен Dim objService ' Объект SWbemServices Dim colProcesses ' Коллекция экземпляров класса WMI Dim objProcess ' Элемент коллекции Dim strResult ' Результирующая строка Dim WshShell ' Объект WshShell Dim theNotepad ' Объект WshScriptExec ' Объявляем константы Const wbemFlagForwardOnly = 32 Const wbemFlagReturnImmediately = 16 Const ForWriting = 2 ' Функция для записи информации в файл Sub TextOut (Text, File) ' Объявляем переменные Dim objFSO, FOut ' Создаем объект FileSystemObject Set objFSO=WScript.CreateObject("Scripting.FileSystemObject") ' Открываем выходной файл для записи Set FOut = objFSO.OpenTextFile (File,ForWriting,true) ' Записываем текстовую строку в файл FOut.WriteLine Text ' Закрываем выходной файл FOut.Close End Sub '********************** Начало ************************************* ' Присваиваем начальные значения переменным strComputer = "." strNamespace = "Root\CIMV2" strResult = "Сведения о запущенных процессах " & VbCrLf & VbCrLf ' Подключаемся к пространству имен WMI Set objService = GetObject("WinMgmts:\\" & _ strComputer & "\" & strNamespace) Set colProcesses = objService.ExecQuery("SELECT * FROM Win32_Process",,_ wbemFlagReturnImmediately+wbemFlagForwardOnly) For Each objProcess In colProcesses strResult = strResult & "Name: " & objProcess.Name & VbCrLf &_ "Description: " & objProcess.Description & VbCrLf &_ "Handle: " & objProcess.Handle & VbCrLf &_ "Parent Process Id: " & objProcess.ParentProcessId & VbCrLf &_ "Command Line: " & objProcess.CommandLine & VbCrLf &_ "Creation Date: " & objProcess.CreationDate & VbCrLf &_ "Executable Path: " & objProcess.ExecutablePath & VbCrLf &_ "Priority: " & objProcess.Priority & VbCrLf &_ "Maximum WorkingSet Size: " & objProcess.MaximumWorkingSetSize & VbCrLf &_ "Minimum WorkingSet Size: " & objProcess.MinimumWorkingSetSize & VbCrLf &_ "Page File Usage: " & objProcess.PageFileUsage & VbCrLf &_ "Peak Virtual Size: " & objProcess.PeakVirtualSize & VbCrLf &_ "Peak WorkingSet Size: " & objProcess.PeakWorkingSetSize & VbCrLf &_ "********************************" & VbCrLf & VbCrLf Next ' Выводим результат в текстовый файл TextOut strResult, "C:\Process.txt" 'Создаем объект WshShell Set WshShell = WScript.CreateObject("WScript.Shell") 'Открываем созданный файл в Блокноте Set theNotepad = WshShell.Exec("notepad " & "C:\Process.txt" ) '************************* Конец ***********************************Листинг 13.14. Вывод свойств всех запущенных процессов