Тема: VBScript: получение списка процессов через API с DynamicWrapperX
Пример выводит список запущенных процессов в системе.
Потребуется библиотека DynamicWrapperX.
Set DX = CreateObject("DynamicWrapperX")
TH32CS_SNAPPROCESS = 2
MAX_PATH = 260
' Смещения членов структуры PROCESSENTRY32:
dwSize = 0
cntUsage = 4
th32ProcessID = 8
th32DefaultHeapID = 12
th32ModuleID = 16
cntThreads = 20
th32ParentProcessID = 24
pcPriClassBase = 28
dwFlags = 32
szExeFile = 36 ' Здесь буфер для имени процесса, длиной MAX_PATH.
Size = 9 * 4 + MAX_PATH ' Размер структуры в байтах.
Struct = DX.Space(Size / 2, "") ' Здесь размер надо задавать в двухбайтных символах,
' поэтому деление на 2. Пустая строка обнуляет структуру.
DX.NumPut Size, Struct, dwSize, "u" ' Пишем размер структуры в её начало.
DX.Register "kernel32", "CreateToolhelp32Snapshot", "i=uu", "r=h"
DX.Register "kernel32", "Process32First", "i=hp", "r=l"
DX.Register "kernel32", "Process32Next", "i=hp", "r=l"
DX.Register "kernel32", "CloseHandle", "i=h", "r=l"
hSnap = DX.CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
DX.Process32First hSnap, Struct ' Первый процесс.
pExeName = DX.StrPtr(Struct) + szExeFile ' Адрес строки с именем exe-файла процесса.
List = DX.StrGet(pExeName, "s") ' Читаем имя в список.
n = 1 ' Счётчик процессов.
While DX.Process32Next(hSnap, Struct)
List = List & vbCrLf & DX.StrGet(pExeName, "s")
n = n + 1
Wend
DX.CloseHandle hSnap
WScript.Echo "Всего процессов: " & n & vbCrLf & vbCrLf & ListАвтор примера - YMP.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

