A feladat megoldásához szükséges függvények a TLHelp32 unitban vannak implementálva. A folyamatok neveit és azonosítóit egy TListView komponens segítségével jelenítjük meg.
A lista elkészítését a GetProcessList függvény végzi el.
procedure GetProcessList;
Először is, szükségünk van egy leíróra, amit a CreateToolHelp32Snapshot függvénnyel kérdezhetünk le.

CreateToolhelp32Snapshot
function CreateToolhelp32Snapshot(
dwFlags,
th32ProcessID: DWORD
): THandle;
„Pillanatfelvételt” készít a rendszer folyamatairól.
Paraméterek
dwFlags
Ez a paraméter határozza meg, hogy mely folyamatok kerüljenek be a listába. A következő értékeket használhatjuk:
- TH32CS_INHERIT a "pillanatfelvétel" leírója örökölhető.
- TH32CS_SNAPHEAPLIST a megadott processz (th32ProcessID) heap-listája.
- TH32CS_SNAPMODULE a megadott processz (th32ProcessID) modul-listája.
- TH32CS_SNAPPROCESS a Win32 processz lista.
- TH32CS_SNAPTHREAD a Win32 szálak is belekerülnek a listába.
- TH32CS_SNAPALL Ugyanaz, mintha a következő 4 flag-et egyszerre használtuk volna: TH32CS_SNAPHEAPLIST, TH32CS_SNAPMODULE, TH32CS_SNAPPROCESS és TH32CS_SNAPTHREAD.
th32ProcessID: DWORD
Processz azonosító. Ha az értéke 0, akkor az aktuális processzt azonosítja. Akkor van értelme használni, ha a TH32CS_SNAPHEAPLIST vagy a TH32CS_SNAPMODULE flag beállított, ellenkező esetben figyelmen kívül marad.
Visszatérési érték
Hiba esetén -1, egyébként egy leíró.
Az első processz adatait a Process32First függvénnyel olvashatjuk be.
if Process32First(h,data) then begin
A további processzek adatainak eléréséhez már a Process32Next függvényt kell használnunk.
Mindkét függvény első paraméterében a lekérdezett leírót kell megadnunk, a második paraméterben pedig egy TProcessEntry32 típusú változót. Ebbe a változóba kerül a lekérdezés eredménye.
Mielőtt meghívnánk a Process32First függvényt, a TProcessEntry32 típusú változó dwSize tagjában be kell állítanunk a struktúra méretét. Ha ezt nem tesszük meg, akkor a függvény futása hibát eredményez.
data.dwSize:=SizeOf(TProcessEntry32);
A lekérdezett processz nevét a szExeFile tag, azonosítóját a th32ProcessID tag tartalmazza.
Ha meg akarunk szüntetni egy folyamatot, akkor ismernünk kell az azonosítóját.
PrID:=StrToInt(ItemFocused.SubItems[0]);
Az azonosító és az OpenProcess függvény segítségével elérhetjük a processz leíróját.
h:=OpenProcess(1,BOOL(0),PrID);
A kijelölt folyamatot a TerminateProcess függvénnyel szüntethetjük meg.
Ret:=TerminateProcess(h,0);