Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   bei WM_QUERYENDSESSION Return Value True zurückschicken!Wie? (https://www.delphipraxis.net/132351-bei-wm_queryendsession-return-value-true-zurueckschicken-wie.html)

SimStar001 10. Apr 2009 18:01


bei WM_QUERYENDSESSION Return Value True zurückschicken!Wie?
 
Hallo, ich habe ein Programm, das im Tray läuft, und erst beendet werden kann, wenn das der User zulässt.

Also wird dann das Herunterfahren abgebrochen, solange mein Programm läuft.
Jetzt fange ich die Nachricht zum Herunterfahren ab und lasse mein Programm schließen. Wie sende ich dann aber den Return VALUE True, wie es hier steht? WM_QUERYENDSESSION

Vielen Dank für die Hilfe.

Luckie 10. Apr 2009 18:06

Re: bei WM_QUERYENDSESSION Return Value True zurückschicken!
 
Forensuche: Hier im Forum suchenWM_QUERYENDSESSION

SimStar001 10. Apr 2009 18:08

Re: bei WM_QUERYENDSESSION Return Value True zurückschicken!
 
Danke, hatte ich schon benutzt, aber nicht das für mich passende gefunden, vielleicht habe ich es aber auch nur übersehen in der Eile... :snowball:

Muetze1 10. Apr 2009 18:16

Re: bei WM_QUERYENDSESSION Return Value True zurückschicken!
 
Weise dem Member Result der TMessage Struktur einfach einen Wert von 1 (true) zu.

jaenicke 10. Apr 2009 18:17

Re: bei WM_QUERYENDSESSION Return Value True zurückschicken!
 
Wie wäre es mit Message.Result?
Aber davon abgesehen solltest du wenn das Programm unter Vista oder höher läuft unbedingt ShutdownBlockReasonCreate / ShutdownBlockReasonDestroy verwenden:
http://msdn.microsoft.com/en-us/library/aa376877.aspx

SimStar001 10. Apr 2009 19:13

Re: bei WM_QUERYENDSESSION Return Value True zurückschicken!
 
Danke, habs jetzt hinbekomen, und klapt auch super.

Was das ShutdownBlockReasonDestroy / ShutdownBlockReasonCreate für Vista und höher betrifft:
Es wird da doch auch WM_QUERYENDSESSION versandt, und auf das kann ihc doch antworten? Dann brauche ich doch die beiden Funktionen nicht, wenn ich das http://msdn.microsoft.com richtig verstanden habe.

Ich will ja einfach nur in meiner Anwendung intern den Wert dafür, dass mein Programm beendet werden darf auf True setzen.

Oder irre ich mich da?

jaenicke 10. Apr 2009 19:49

Re: bei WM_QUERYENDSESSION Return Value True zurückschicken!
 
Zitat:

Zitat von SimStar001
Es wird da doch auch WM_QUERYENDSESSION versandt, und auf das kann ihc doch antworten? Dann brauche ich doch die beiden Funktionen nicht, wenn ich das http://msdn.microsoft.com richtig verstanden habe.

Das wird auch versendet, aber der Benutzer bekommt angezeigt, dass dein Programm nicht beenden möchte, aber keinen Grund. Was willst du wetten, dass ein Großteil der Anwender das Herunterfahren fortsetzen?

Wenn du das mit ShutdownBlockReasonCreate machst, dann steht da z.B., das Brennprogramm XY nicht geschlossen werden konnte und der selbst definierte Grund. Z.B. "Es ist ein Brennvorgang im Gang, abbrechen macht den Rohling unbrauchbar!" oder sowas.

Damit sieht der Anwender, warum du das Herunterfahren blockieren möchtest, nicht nur, dass du es tun möchtest.

SimStar001 11. Apr 2009 01:19

Re: bei WM_QUERYENDSESSION Return Value True zurückschicken!
 
Alles klar, so habe ich die Erklärung auch verstanden.
Nur glaube ich wurde ich falsch verstanden, bzw. ist nicht klar herausgegangen was ich eigentlich bezwecken möchte.

Ich will das Herunterfahren durch den Benutzer auf jeden Fall durchführen lassen. Nur musste ich halt vorher das Herunterfahren abfangen, um in meinem Programm ein Beenden dessen zuzulassen.

Habe ich das getan, und dann nicht True zurückgesendet, wurde der Rechner dann nicht heruntergefahren.
Jetzt nach dem Senden von True, wird alles wie gewünscht ausgeführt. Da das ja auch unter Windows Vista funktioniert, und ich ja nicht das Herunterfahren blockieren möchte, denke ich, dass ich es dabei belassen kann.


Vielen Dank!

jaenicke 11. Apr 2009 01:36

Re: bei WM_QUERYENDSESSION Return Value True zurückschicken!
 
Ja, sicher, in dem Fall reicht das, ja. Da hatte ich in dem Moment nicht mehr dran gedacht als ich das oben geschrieben hatte.


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