Enumerate Process via CreateToolhelp32Snapshot - Delphi

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
Featured Windows APIs
Created
April 12, 2025
Last Revised
April 13, 2025