Einzelnen Beitrag anzeigen

Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Programm beenden dass aus Konsole (gepiped) gestartet wu

  Alt 7. Jun 2007, 15:45
Okay ich hab das Problem gelöst, indem ich eure "KillTask" Funktion etwas umgeschrieben habe:

Namlich von dem Code:

Delphi-Quellcode:
function KillTask(const AExeName: string): boolean;
var
  p: TProcessEntry32;
  h: THandle;
begin
  Result := false;
  p.dwSize := SizeOf(p);
  h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
  try
    if Process32First(h, p) then
      repeat
        if AnsiLowerCase(p.szExeFile) = AnsiLowerCase(AExeName) then
          Result := TerminateProcess(OpenProcess(Process_Terminate,
                                                 false,
                                                 p.th32ProcessID),
                                     0);
      until (not Process32Next(h, p)) or Result;
  finally
    CloseHandle(h);
  end;
end;
In "KillChildProcesses":

Delphi-Quellcode:
function KillChildProcesses(ProcessID:Cardinal): boolean;
var
  p: TProcessEntry32;
  h: THandle;
begin
  Result := false;
  p.dwSize := SizeOf(p);
  h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
  try
    if Process32First(h, p) then
      repeat

       if p.th32ParentProcessID=ProcessID then
        begin
          KillChildProcesses(p.th32ProcessID);
          Result := TerminateProcess(OpenProcess(Process_Terminate,false,p.th32ProcessID),0);
        end;
      until (not Process32Next(h, p));
  finally
    CloseHandle(h);
  end;
end;

Diese Funktion killt alle Prozesse, die jemand von der eigenen Anwendung aus gestartet wurden, wenn man sie so aufruft:

killchildprocesses(GetCurrentProcessId);


Grüße, euer alleinherrscher
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat