AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Code ausführen, bevor Prozess beendet wird
Thema durchsuchen
Ansicht
Themen-Optionen

Code ausführen, bevor Prozess beendet wird

Ein Thema von Elite · begonnen am 14. Nov 2004 · letzter Beitrag vom 15. Nov 2004
Antwort Antwort
Elite
(Gast)

n/a Beiträge
 
#1

Code ausführen, bevor Prozess beendet wird

  Alt 14. Nov 2004, 14:19
Hallo,
gibt es eine Möglichkeit, Code auszuführen, noch nachdem der WindowsXP-Anwender in seinem Taskmanager auf "Prozess beenden" geklickt hat? Wird irgendeine Message geschickt o.Ä? (Mein Programm läuft mich ShowMainForm := false
Ich meine nicht WM_ENDSESSION oder WM_QUERYENDSESSION, denn diese werden nur beim Herunterfahren/Abmelden verschickt. Doch was, wenn der Benutzer das Proggi gewaltsam abschießt, ich aber vorher noch dringend Daten speichern muss?
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Code ausführen, bevor Prozess beendet wird

  Alt 14. Nov 2004, 14:20
Wie du gesagt hast, wird das Programm "abgeschossen". Das heisst: Es wird einfach aus dem Speicher entladen, soweit möglich. Damit nimmt Windows deinem Programm jegliche Möglichkeit zu reagieren.
  Mit Zitat antworten Zitat
Elite
(Gast)

n/a Beiträge
 
#3

Re: Code ausführen, bevor Prozess beendet wird

  Alt 14. Nov 2004, 14:23
Ich hatte darauf spekuliert, dass Windows dem Prozess vielleicht eine Art "last Chance" anbietet, indem es eine Message sendet und noch ne Sekunde wartet, bis es den Prozess beendet. So etwas gibt es also nicht?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: Code ausführen, bevor Prozess beendet wird

  Alt 14. Nov 2004, 14:23
Hi Elite,

Zitat von Elite:
Doch was, wenn der Benutzer das Proggi gewaltsam abschießt, ich aber vorher noch dringend Daten speichern muss?
wenn der Benutzer das Programm abschießt, dann kannst du davon ausgehen, dass er zu 99% nicht will dass das Programm noch irgendwas macht. Deshalb gibts auch keine Messages. Du kannst höchstens in regelmäßigen Abständen speichern (ca. jede Minute 1 Mal), dann ist die älteste Sicherung höchstens eine Minute alt.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#5

Re: Code ausführen, bevor Prozess beendet wird

  Alt 14. Nov 2004, 21:34
Hallo!

Beim Abschießen eines Tasks per Task-Manager wird zuerst eine WM_CLOSE-Nachricht an das Programm gesendet.
Das Programm reagiert (wenn es noch reagiert!) darauf mit der Abarbeitung des Program-Ende-Codes. Das ist derselbe, der auch beim Schließen des Programms über Menü oder Schließkreuz abgearbeitet wird.

Reagiert das Programmm darauf nicht, wird es "hart" beendet, d.h. aus dem Speicher geworfen.

Meine Programme fragen in der Regel nach, ob sie wirklich beendet werden sollen. Die Frage kommt auch beim Beenden per Task-Manager. Die im "OnCloseQuery" eingetragene Routine wird also noch abgearbeitet.

Ein Problem gibt es nur, wenn das Programm (Haupt-Thread) "hängt" - dann geht nichts mehr. Außerdem sollte das schnell gehen, sonst kommt die Frage "Reagiert nicht" und damit kann man wirklich alles abwürgen.

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
Die 6 Probleme des Programmierers: 1. dauert das länger, als man 2. glaubt, 3. geht das nicht so, wie man sich das 4. schlau überlegt hat, und 5. sitzt der Fehler da, wo man ihn 6. zuletzt sucht
  Mit Zitat antworten Zitat
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Code ausführen, bevor Prozess beendet wird

  Alt 14. Nov 2004, 22:00
Zitat von Brüggendiek:
Beim Abschießen eines Tasks per Task-Manager wird zuerst eine WM_CLOSE-Nachricht an das Programm gesendet.
Nur wenn der Task mit "Task beenden" auf dem "Anwendungen"-Tab beendet wird. Wird "Prozess beenden" von dem "Prozesse"-Tab benutzt, wird das Programm sofort gekillt.
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  Mit Zitat antworten Zitat
Elite
(Gast)

n/a Beiträge
 
#7

Re: Code ausführen, bevor Prozess beendet wird

  Alt 15. Nov 2004, 16:42
Zitat von Mystic:
Nur wenn der Task mit "Task beenden" auf dem "Anwendungen"-Tab beendet wird. Wird "Prozess beenden" von dem "Prozesse"-Tab benutzt, wird das Programm sofort gekillt.
Ja, und genau in diesem Fall möchte ich noch Code ausführen. Naja gut, ich akzeptiere, dass es nicht geht
  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 15:25 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