![]() |
Prozess beenden
Hallo zusammen, :mrgreen:
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 :D 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; |
Du brauchst ein ProcessHandle mit TERMINATE_PROCESS Zugriff...
Stichwörter dazu: OpenProcess, TerminateProcess |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz