Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Code in jedem Fall beim Beenden eines Programmes ausführen (https://www.delphipraxis.net/62090-code-jedem-fall-beim-beenden-eines-programmes-ausfuehren.html)

kurtm1 30. Jan 2006 21:15


Code in jedem Fall beim Beenden eines Programmes ausführen
 
Gibt es irgendeine Möglichkeit die sicher stellt, dass ein bestimmter Code vor(beim) Beenden eines Programmes ausgeführt wird?

Dies ist vorallem im Zusammenhang mit dem Beenden des Programmes über 'externe' Quellen sprich TaskManager etc. gemeint.

thx

mirage228 30. Jan 2006 21:34

Re: Code in jedem Fall beim Beenden eines Programmes ausführ
 
Hi,

Für das normale Beenden einer Anwendung kannst Du dir das Delphi-Referenz durchsuchenOnClose bzw. Delphi-Referenz durchsuchenOnCloseQuery Event Deines Forms anschauen.

Wenn Dein Prozess mit dem TaskManager "gewaltsam" beendet wird, dann wird dein Prozess nicht darüber benachrichtigt und dein Prozess wird sofort beendet.

mfG
mirage228

3_of_8 30. Jan 2006 21:35

Re: Code in jedem Fall beim Beenden eines Programmes ausführ
 
Der Taskmanager versucht doch auch zuerst, das Programm "normal" zu beenden, oder?

Und kann man nicht theoretisch irgendnen Hook setzen?

Rastaman 30. Jan 2006 21:39

Re: Code in jedem Fall beim Beenden eines Programmes ausführ
 
Zitat:

Zitat von 3_of_8
Der Taskmanager versucht doch auch zuerst, das Programm "normal" zu beenden, oder?

Und kann man nicht theoretisch irgendnen Hook setzen?

Nicht aber, wenn der Prozess beendet wird. Dann is sofort Schicht im Schacht.

Matze 30. Jan 2006 21:39

Re: Code in jedem Fall beim Beenden eines Programmes ausführ
 
Zitat:

Zitat von 3_of_8
Der Taskmanager versucht doch auch zuerst, das Programm "normal" zu beenden, oder?

"Task beenden" imho ja, aber "Prozess beenden" (killen) nicht.

3_of_8 30. Jan 2006 21:41

Re: Code in jedem Fall beim Beenden eines Programmes ausführ
 
Also wenn ich einen Prozess beenden mit dem TASKMGR, dann kommt erst nach ein paar Sekunden das "Sofort beenden" ja oder nein.

Sofort killen geht zumindest bei mir nicht.

Und wenn der Prozess eh nicht reagiert, dann kann man das mit dem Code vor dem Beenden gleich vergessen.

SirThornberry 30. Jan 2006 21:44

Re: Code in jedem Fall beim Beenden eines Programmes ausführ
 
wenn man mit TerminateProcess arbeitet wird nicht erst nachgefragt, dann ist der Prozess wenn die berechtigungen da sind einfach weg. Wenn noch eine Nachfrage kommt wurde zuvor versucht mit Messages zu beenden, denn dort kann man noch auf Antwort waren. Bei TerminateProcess wird einfach der Prozess aus dem Speicher entfernt und schluss ist (kannst ja mal versuchen mit meinem DesktopSwitch einen Prozess hart zu beenden, der verwendet TerminateProzess und da dürfte auch seitens des Betriebssystems keine weitere Nachfrage kommen).


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:44 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