Perdón, ese código pertenece a una clase y aislado pierde sentido. Pongo el código aislado e independiente. Devuelve el listado en un TStrings con lo que se podrá usar un TMemo, TListBox, o cualquier objeto que tenga un TStringList.
Lo he probado en Windows XP 32 bits y Windows 7 64 bits pero no en Vista.
Se que es equivalente a
CreateWin9xProcessList. Quizás el proceso global de listado sólo deba llamar a CreateWin9xProcessList y éste procedimiento debería perder el -Win9x- de su nombre, para evitar confusiones.
Código Delphi
[-]procedure ProcList(Lista: TStrings);
var
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Lista.Clear;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
if FSnapshotHandle <> THandle(-1) then
begin
if Process32First(FSnapshotHandle, FProcessEntry32) then
begin
repeat
Lista.Add(FProcessEntry32.szExeFile);
until not Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
end;
Saludos.