Enumerate Process via CreateToolhelp32Snapshot - Delphi

DarkCoderSc personal avatar
DarkCoderSc

Jean-Pierre LESUEUR

// ...

uses
  System.SysUtils, Winapi.Windows, Winapi.TlHelp32, Generics.Collections;

// ...

var hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if hSnapshot = INVALID_HANDLE_VALUE then
ExitProcess(1);
try
    var AProcessEntry32 : TProcessEntry32;
    var AProcessEntries := TList<TProcessEntry32>.Create();
    
    AProcessEntry32.dwSize := SizeOf(TProcessEntry32);
    
    if not Process32First(hSnapshot, AProcessEntry32) then
        ExitProcess(2);
    
    AProcessEntries.Add(AProcessEntry32);
    
    while Process32Next(hSnapshot, AProcessEntry32) do
        AProcessEntries.Add(AProcessEntry32);
    
    for var AProcessEntry in AProcessEntries do
        WriteLn(Format('%s (%d)', [
        AProcessEntry.szExeFile,
        AProcessEntry.th32ProcessID
        ]));
finally
    CloseHandle(hSnapshot);
end;

Implemented By Technique


Created

April 12, 2025

Last Revised

April 13, 2025