AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Wie beendet Windows mein Programm
Thema durchsuchen
Ansicht
Themen-Optionen

Wie beendet Windows mein Programm

Ein Thema von F.W. · begonnen am 27. Dez 2003 · letzter Beitrag vom 5. Jan 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#11

Re: Wie beendet Windows mein Programm

  Alt 29. Dez 2003, 14:14
Hi!

Ich glaube so:

Delphi-Quellcode:
procedure TTitel.WMQueryEndSession(var M: TWMQueryEndSession);
begin
inherited;
Application.Terminate;
Msg.Result:=1;
end;

Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#12

Re: Wie beendet Windows mein Programm

  Alt 29. Dez 2003, 14:26
Delphi-Quellcode:
procedure TTitel.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
  inherited;
  Msg.Result := 1;
end;
So ist es richtig.
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#13

Re: Wie beendet Windows mein Programm

  Alt 29. Dez 2003, 14:33
Das habe ich nach Luckies Posting versucht, es hat nicht geklappt. Aber ich probier's nochmal, ich hab's nur schnell in Eile gemacht.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#14

Re: Wie beendet Windows mein Programm

  Alt 29. Dez 2003, 16:31
Terminate solltest du nie aufrufen.
WM_QUERYENDSESSION fragt ob alle Programme mit Runterfahren einverstanden sind.
Mit 1 sagst du ja.
Erst bei WM_ENDSESSION sollte das Programm sich beenden. Es kann ja eines der anderen Programme nein sagen und dann hat man sich faelschlich beendet.
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#15

Re: Wie beendet Windows mein Programm

  Alt 4. Jan 2004, 17:09
Ok, ich hab's jetzt in den Griff bekommen!

Ich dachte es liegt an dem Icon, aber in wirklichkeit lag es an den Netzwerkcomponenten, die sich in einem anderen Formular befanden. Das Hauptformular reagiert jetzt auf die Message WM_QUERYENDSESSION und ruft Free für die 3 Componenten auf und schließt sich danach.

Bei WM_ENDSESSION hat das nicht geklappt, mein Programm beendet sich zwar , aber Windows fährt nachher nicht weiter runter, woran liegt das?
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#16

Re: Wie beendet Windows mein Programm

  Alt 5. Jan 2004, 10:07
Ich vermute, dass du Komponenten benutzt, die für sich Fensterhandle (was dein Hauptformular auch hat) erzeugen. Sobald sie dieses tun bekommen sie ebenfalls die WM_QUERYEND etc gesendet, wenn der Programmierer vergessen hat darauf richtig zu antworten - wird es mit dem Herunterfahren nichts. Dass passiert oft aus Flüchtigkeit, oder aus schlechtem Programmierstil . Denn eigentlich brauchst du die query-end etc. nicht abfangen, da der Default-Handler (die Standard-Fensterprozedur) diese Nachrichten korrekt verarbeitet. Vermute dass die Komponenten die Nachrichten nicht weiterleiten, schau dir deine Komp. mal genauer an. Ansonsten ist das auch keine "Gute"-Lösung in der query-end die Komponenten zu "zerstören". Man weiss nie in welcher Reihenfolge Windows die Botschaften sendet und zukunftige versionen etc.etc. versuch den Fehler bei den Komponenten zu beheben und informiere den Programmierer darüber, damit andere nicht das gleiche machen müssen.

MFG
Volker
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#17

Re: Wie beendet Windows mein Programm

  Alt 5. Jan 2004, 19:34
Zitat von Vjay:
...und informiere den Programmierer darüber, damit andere nicht das gleiche machen müssen.
Wie meinst du das? Ich bin doch der Programmierer. Ich werde im nächsten Posting mal die 3 Componenten aufzählen, geht jetzt nur nicht, weil der Computer auf dem die Dateien liegen aus ist und ich will ihn nicht nur deswegen anschalten.

Aber danke! Das gibt mir Hoffnung eine gute Lösung zu finden!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 13:04 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