AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Programm beenden dass aus Konsole (gepiped) gestartet wurde?
Thema durchsuchen
Ansicht
Themen-Optionen

Programm beenden dass aus Konsole (gepiped) gestartet wurde?

Ein Thema von alleinherrscher · begonnen am 6. Jun 2007 · letzter Beitrag vom 7. Jun 2007
Antwort Antwort
Benutzerbild von alleinherrscher
alleinherrscher

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

Programm beenden dass aus Konsole (gepiped) gestartet wurde?

  Alt 6. Jun 2007, 00:41
Hi!

Ich leite per Pipes die Konsole in ein Memo um. (code siehe anhang)

Per CloseHandle oder TerminateProcess schaffe ich es auch die zuvor gestarte CMD.exe zu beenden aber nur solange ich nicht ein weiteres Programm in der Konsole gestartet habe:

Beispiel:

Programm starten, und vom programm aus ein DOS-Zeilenbasiertes Programm starten, sodass dieses als "unterprogramm" der cmd.exe läuft.

Jetzt scheint das Closehandle bwz das TerminateProcess keine wirkung mehr zu haben?!

Vielleicht hab ich micht etwas umständlich ausgedrückt, aber ich hoffe ihr wisst was ich meine...wie muss ich vorgehen? muss ich zunächst alle programme die von der cmd.exe aus gestartet wurden, beenden? wie komme ich an die Handles dieser programm?

Viele Grüße,

Alleinherrscher
Angehängte Dateien
Dateityp: zip redirect_203.zip (216,0 KB, 8x aufgerufen)
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

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

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

  Alt 6. Jun 2007, 15:59
okay, nachts um 1 uhr is wohl keiner mehr online, ungünstige zeit, von daher: PUSH

Oder um die Frage etwas zu verfeinern:

Wie finde ich alle Programme, die von der CMD.exe (welche ja von meinem Programm gestartet wurde) aus gestartet wurden und kann diese beenden egal ob sie reagieren oder nicht...?

Vg, alleinherrscher
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz