(Co-Admin)
Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
Delphi 11 Alexandria
|
10. Jun 2003, 21:40
Moin Lordroc,
das sollte so gehen:
Delphi-Quellcode:
var
pdwResult : PDWORD; // für den Buffer
pdwWork : PDWORD; // um dem Buffer verarbeiten zu können
dwCountIn : DWORD; // Grösse des Buffers in Byte
dwCountOut : DWORD; // Zurückgelieferte Anzahl Byte
i : integer;
begin
dwCountOut := 0; // Sicherheitshalber initialisieren, muss nicht sein
dwCountIn := 1024; // Willkürlich gewählt, genügt für 256 Prozesse
pdwResult := AllocMem(dwCountIn);
try
if not EnumProcesses(pdwResult,dwCountIn,dwCountOut) then begin
ShowMessage(SysErrorMessage(GetLastError));
end else begin
pdwWork := pdwResult; // zur Verarbeitung übergeben, damit FreeMem funktioniert
for i := 1 to (dwCountOut shr 2) do begin // shr 2 = / 4, da 4 Byte je DWORD
// Prozess Id ausgeben
ShowMessage('ProzessId#'+IntToStr(i)+': '+IntToStr(pdwWork^));
// auf nächste addressieren (inc erhöht automatisch um 4, da es ein typisierter Pointer ist
inc(pdwWork);
end;
end;
finally
FreeMem(pdwResult,dwCountIn);
end;
end;
Die Beschreibung der API Funktionen erhältst Du ansonsten aus dem PSDK (kann heruntergeladen werden) oder online bei msdn.micorsoft.com.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
|