Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi windows end Message und CloseQuery (https://www.delphipraxis.net/29134-windows-end-message-und-closequery.html)

Helmi 4. Sep 2004 11:40


windows end Message und CloseQuery
 
Hallo,

mein Problem bezieht sich auf mein gestriges Problem:

CloseQuery und Windows beenden

Wenn Windows beendet wird, dann wird CloseQuery zuerst (scheinbar) ausgeführt.
Meine Variable "Windows_Session_End" ist aber zu diesem Zeitpunkt noch false
und deshalb wird die Meldung angezeigt.

Ich habe herrausgefunden, dass die Variable erst nach einiger Zeit true wird, aber leider zu spät.

weiss jemand eine andere Lösung?

Hintergrund des ganzen ist, dass ich die meldung nicht anzeigen lassen will, wenn Windows beendet wird und die software noch läuft.

mfg
Hlmi

Nothine 4. Sep 2004 13:10

Re: windows end Message und CloseQuery
 
erst das setzen von WINDOWS_SESSION_END und dann der inherited aufruf?

Helmi 4. Sep 2004 13:18

Re: windows end Message und CloseQuery
 
muss ich ausprobieren

Helmi 4. Sep 2004 13:26

Re: windows end Message und CloseQuery
 
leider hat das nix gebracht mit:

Code:
Windows_Session_End := true
inherited;

Duffy 4. Sep 2004 13:30

Re: windows end Message und CloseQuery
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Helmi
vielleicht hilft Dir die Demo weiter ...

bye
Claus

[EDIT]Sehe gerade, Du mußt natürlich "WMQUERYENDSESSION" verwenden und nicht "WMEndSession" [/EDIT]

Helmi 4. Sep 2004 13:45

Re: windows end Message und CloseQuery
 
Hallo duffy,

danke für das Demo

genau das was ich brauch

das
Code:
procedure TForm1.WMQUERYENDSESSION(var Msg: TWMQueryEndSession);
begin
  Msg.Result := 1;
  Shutdown := True;
  inherited;
end;
hatte ich auch schon mal probiert...

nur ohne Msg.Result := 1 und ohne inherited;

mfg
Helmi

Vjay 4. Sep 2004 23:35

Re: windows end Message und CloseQuery
 
Also zur Erklärung die Query-End sendet windows um abzufragen ob beendet werden darf. Die End-Session kommt wirklich erst kurz vorm shutdown, d.h. nach erhalt des End-Session kann es jeden moment vorbei sein.

[klugscheissermode]
Die Lösung das in die Query-End zu schreiben wäre nicht 100% richtig, denn ein anderes Programm könnte "0/Nein" antworten und der Shutdown würde nicht fortgesetzt werden. Was genau die nachrichten mitliefern weiss ich nicht, aber notfalls würd ich nochn Timer setzen der nach 2-5 Sekunden das Shutdown wieder auf false setzt.
[/klugscheissermode]

Duffy 4. Sep 2004 23:47

Re: windows end Message und CloseQuery
 
Hallo Vjay,
und was machen all die anderen Programme ...

bye
Claus

Vjay 4. Sep 2004 23:51

Re: windows end Message und CloseQuery
 
Guter Einwand, es meistens auch falsch ;).

Duffy 4. Sep 2004 23:53

Re: windows end Message und CloseQuery
 
sie warten darauf, daß Windows sagt "Ist schon OK, es hat keiner was dagegen, wenn wir jetzt herunterfahren"

bye
Claus

Vjay 4. Sep 2004 23:56

Re: windows end Message und CloseQuery
 
Ne eben nicht, es gibt viele die in der query-end bereits beenden.

Duffy 5. Sep 2004 00:00

Re: windows end Message und CloseQuery
 
Hallo Vjay,
dann habe ich was verpennt.
  • message WM_QUERYENDSESSION = Dürfen wir?
  • message WM_ENDSESSION = Es ist ENDE ...

bye
Claus

Vjay 5. Sep 2004 00:04

Re: windows end Message und CloseQuery
 
Ne, haste nix verpennt. Meine Aussage war das es Programme gibt, die sich bei der Query-End bereits beenden. Wurde hier glaube ich sogar im Forum bereits als Lösung gepostet für die Frage "Beim Beenden von windows wir meine Form.OnClose nicht aufgerufen." Antwort: "WM_qeryendsession abfangen und das Form schliessen."

Im Grunde macht es auch keinen grossen Unterschied, denn wenn der User / ein Programm das System runterfahren will und ein Programm blockiert, wird dieses meist eh geschlossen und erneut heruntergefahren. Denn der User / ein Prozess hat ja weiterhin die Absicht dies zu tun.

Duffy 5. Sep 2004 00:10

Re: windows end Message und CloseQuery
 
Hallo Vjay,
aber nur, weil der Programmierer meint es sei Feierabend. FormCloseQuery kommt erst bei "WM_ENDSESSION". Das Flag ist dann bereits gesetzt. Aber wenn keins kommt, weil ein Programm gesagt hat "ich will nicht", dann gebe ich Dir Recht "gesetztes Flag und was nun?"

bye
Claus


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz