Con ésté
trozo de código se puede obtener la lista de los procesos (nombre del
ejecutable) que están en marcha en ese momento en la máquina:
var
i: Integer;
bContinue: BOOL;
begin
// Limpiar la lista
ListBox1.Items.Clear;
// Recoge la lista de procesos en éste momento
aSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
aProcessEntry32.dwSize := SizeOf(aProcessEntry32);
// Acceder al primer proceso
bContinue := Process32First(aSnapshotHandle, aProcessEntry32);
// Recorerr los procesos activos
while (Integer(bContinue) <> 0) do begin
// Añadirlo a la lista
ListBox1.Items.Add(ExtractFileName(aProcessEntry32.szExeFile));
// Hay más?
bContinue := Process32Next(aSnapshotHandle, aProcessEntry32);
end;
// cerrar la estructura
CloseHandle(aSnapshotHandle);
Utilizando
aProcessEntry32 se
puede obtener más información de cada uno de los procesos, como:
- Identificador
- Nombre competo
- ...
IntToHex(aProcessEntry32.th32ProcessID,
4)
aProcessEntry32.szExeFile