Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi WM_QUERYENDSESSION verarbeiten (https://www.delphipraxis.net/102018-wm_queryendsession-verarbeiten.html)

messie 22. Okt 2007 10:50


WM_QUERYENDSESSION verarbeiten
 
Moin,

ich habe im Programm eine OnCloseQuery-Routine, die ein paar Abfragen macht, bevor das Fenster geschlossen werden darf. Nun habe ich mal auf den Ausschaltknopf gedrückt, dort bleibt die Routine dann hängen und verweigert das Schließen.

Wie kann ich die Message im OnCloseQuery so handeln, dass der Rechner runterfahren kann?

Grüße, Messie

Luckie 22. Okt 2007 11:04

Re: WM_QUERYENDSESSION verarbeiten
 
Warum fragst du, wenn du die Antwort oder zumindest das Stichwort für die Suche, selber im Threadtitel postest?

messie 22. Okt 2007 11:17

Re: WM_QUERYENDSESSION verarbeiten
 
Zitat:

Zitat von Luckie
Warum fragst du, wenn du die Antwort oder zumindest das Stichwort für die Suche, selber im Threadtitel postest?

Weil ich nur selten mit Messages arbeite und nach einen Beispielcode suchte, aber nix gefunden habe.

Grüße, Messie

Luckie 22. Okt 2007 11:24

Re: WM_QUERYENDSESSION verarbeiten
 
Ich weiß ja nicht, wie du suchst, aber ich finde auf anhieb mit Hier im Forum suchenWM_QUERYENDSESSION das hier: http://www.delphipraxis.net/internal...=710639#710639

messie 22. Okt 2007 11:29

Re: WM_QUERYENDSESSION verarbeiten
 
Dort steht, wie man eine Ereignisbehandlung für das Event schreibt. Ich wollte die Message aber direkt in OnCloseQuery verwenden.
Ich könnte auch in einer Ereignisroutine ein Flag setzen, das kommt mir aber etwas umständlich vor..

Grüße, Messie

Luckie 22. Okt 2007 11:32

Re: WM_QUERYENDSESSION verarbeiten
 
Du kannst keine Ereignisse verschachteln. Du wirst also WM_QUERYENDSESSION abfangen müssen und dort eine entsprechende globale Variable für dein OnCloseQuery Ereignis setzen müssen.

messie 22. Okt 2007 11:42

Re: WM_QUERYENDSESSION verarbeiten
 
Zitat:

Zitat von Luckie
Du kannst keine Ereignisse verschachteln. Du wirst also WM_QUERYENDSESSION abfangen müssen und dort eine entsprechende globale Variable für dein OnCloseQuery Ereignis setzen müssen.

Alles klar, die Info brauchte ich...

Danke, Messie

Christian Seehase 22. Okt 2007 17:35

Re: WM_QUERYENDSESSION verarbeiten
 
Moin Messie,

mir entzieht sich allerdings, warum beim manuellen Schliessen etwas anderes passieren soll, als wenn Windows heruntergefahren wird.
Das wäre dann nämlich ein ziemlich untypisches Verhalten.

messie 23. Okt 2007 08:32

Re: WM_QUERYENDSESSION verarbeiten
 
Zitat:

Zitat von Christian Seehase
Moin Messie,

mir entzieht sich allerdings, warum beim manuellen Schliessen etwas anderes passieren soll, als wenn Windows heruntergefahren wird.
Das wäre dann nämlich ein ziemlich untypisches Verhalten.

Das steht auf einem anderen Blatt. Das Fenster ist zum Zeitpunkt des Schließens gar nicht offen und ich arbeite fast ausschließlich mit modalen Fenstern. Es ist ein anderes modales Fenster offen. Tatsache ist, daß beim Drücken des Herunterfahrknopfes eine Fehlermeldung aus dem OnCloseQuery eines geschlossenen Form erscheint.
Da ist also noch etwas anderes faul, aber erstmal kommt nicht mehr die Fehlermeldung nachdem ich die Message abgefangen habe.

Grüße, Messie


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