Thema: Delphi Prozess beenden

Einzelnen Beitrag anzeigen

edelweiss0

Registriert seit: 27. Mär 2003
2 Beiträge
 
#1

Prozess beenden

  Alt 27. Mär 2003, 14:39
Hallo zusammen,

Ich möchte in Windows NT einen Prozess beenden (von welchem ich den Dateinamen besitze). Da dies mit Snapshot in Windows NT nicht funktioniert, habe die Funktion "EnumProcesses" gewählt. Doch diese Funktion zeigt mir jetzt aber die FileNamen nicht an, warum (Der Filename steht in der Variabeln "ExeName". Kann mir jemand helfen ?

Danke für eure Hilfe

Gruss

Andi

Delphi-Quellcode:
var
PIDlist: TPIDlist;

function GetProcessList(var PIDlist : TPIDlist): integer;
var cb, cbNeeded : Cardinal;
begin
cbNeeded := 0;
cb := SizeOf(PIDlist);
FillChar(PIDlist, cb, 0);
if not EnumProcesses(@PIDlist, cb, cbNeeded) then
cbNeeded := 0
else
cbNeeded := cbNeeded div SizeOf(DWord);
Result := cbNeeded;
end;

procedure GetProcessNames;
var numProcesses : integer;
ProcHandle : THandle;
ExeName : string;
i: Integer;
szName: Pchar;
begin
numProcesses := GetProcessList(PIDlist);
for i := 0 to numProcesses-1 do begin
ProcHandle := OpenProcess(PROCESS_QUERY_INFORMATION, False, PIDlist[i]);

if ProcHandle <> 0 then begin
try
if GetModuleBaseName(ProcHandle, 0, @szName, sizeof (szName)) > 0 then
ExeName := szName
else
ExeName := 'System';
finally
CloseHandle(ProcHandle)
end;
end
else
if PIDlist[i] = 0 then
ExeName := 'System idle';
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var numProcesses : integer;
xPIDlist: TPIDlist;
begin
GetProcessNames;
end;
  Mit Zitat antworten Zitat