Entwickler-Ecke
Windows API - Programm beenden
anno - Di 26.08.08 09:58
Titel: Programm beenden
So nun eine weiterre frage:
wie kann ich denn ein anderes programm aus delphı heraus sauber beenden?
Welche funktion brauche ich dazu?
Ich wiii den prozess über dıe prozess id suchen und dann beenden.
Einfach den task zu kıllen ist nicht sehr gut.
İch habe mıtbekommen, dass es mıt WM_CLOSE gehen soll, allerdings hab eich auch nach langer suche bısher nıx gefunden.
könnt ıhr mır da bitte weiterhelfen!
gruss anno
anno - Di 26.08.08 10:14
Titel: Re: Programm beenden
nein da finde ich nıx, was sich mit der prozess id erledigen könnte.
delphi10 - Di 26.08.08 11:33
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var wndmain: Hwnd;
wndMain := FindWindow(nil,'Fenstername'); if wndMain <> 0 then PostMessage(wndmain,WM_QUIT,0,0); |
Timosch - Di 26.08.08 14:59
delphi10 hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| var wndmain: Hwnd;
wndMain := FindWindow(nil,'Fenstername'); if wndMain <> 0 then PostMessage(wndmain,WM_QUIT,0,0); | |
Wo kommt denn da die PID vor?
Mal ganz abgesehen davon, dass das nur bei GUI-Programmen geht.
Also mir fällt jetzt nur die Variante mit Task abschießen ein, die du ja nicht sonderlich magst:
http://swissdelphicenter.com/de/showcode.php?id=266. Läuft zwar auch über den Dateinamen des Prozesses, aber wenigstens taucht die PID darin auf, also könnte man es wohl umschreiben.
delphi10 - Di 26.08.08 15:18
Timosch hat folgendes geschrieben: |
Wo kommt denn da die PID vor?
Mal ganz abgesehen davon, dass das nur bei GUI-Programmen geht.
Also mir fällt jetzt nur die Variante mit Task abschießen ein, die du ja nicht sonderlich magst: http://swissdelphicenter.com/de/showcode.php?id=266. Läuft zwar auch über den Dateinamen des Prozesses, aber wenigstens taucht die PID darin auf, also könnte man es wohl umschreiben. |
Die schweizer Variante hat leider den Nachteil, daß der Prozess ohne wenn und aber abgeschossen wird. Der Zielprozess bekommt keine Gelegenheit mehr eventuelle Daten zu sichern bzw. einen laufenden SubProzess zu beenden. Da ich gerade vor kurzem dieses Problem lösen mußte, habe ich beide Versionen getestet. Sauber beenden geht IMO nur mit WM_Quit.
cu delphi10
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!