![]() |
Re: Warum klappt Abmeldung bei laufendem Programm nicht?
Zitat:
Wer also immer noch 1.1 benutzt, wird wohl um die Botschaftsmehtoden nicht herumkommen:
Code:
const int WM_QUERYENDSESSION = 0x11;
protected override void WndProc(ref Message m) { if (m.Msg == WM_QUERYENDSESSION) Application.Exit(); // sollte unter 1.1 noch kein (Form)Closing Event aufrufen base.WndProc(ref m); } |
Re: Warum klappt Abmeldung bei laufendem Programm nicht?
@Khabarakh: :lol: Genau das hab ich vermutet :)
|
Re: Warum klappt Abmeldung bei laufendem Programm nicht?
Zitat:
Sowas hatte ich naemlich auch schonmal ;-) Immer fleissig Window-Messages abgefangen und nachgeschaut, ob es die erwartete ist und wenn nicht einfach weggeworfen anstatt weiterzuleiten. Ist nur 'ne Idee... Gruesse, Lizzy |
Re: Warum klappt Abmeldung bei laufendem Programm nicht?
Bisher hab ich noch keine Messages aufgefangen, ich werd den Vorschlag von Khabarakh verwenden. Er klingt so wissend, also wirds stimmen :D
Jetzt passiert was lustiges: Das Programm wird zwar beendet, der Abmeldevorgang aber unterbrochen. Wenn ich dann ein zweites mal den Befehl zum Abmelden geb, wird er durchgeführt :shock: |
Re: Warum klappt Abmeldung bei laufendem Programm nicht?
Zitat:
Zitat:
Ansonsten Versuch doch mal meinen Vorschlag und nimm' WM_ENDSESSION :wink: |
Re: Warum klappt Abmeldung bei laufendem Programm nicht?
Zitat:
Delphi-Quellcode:
enthält...
e.Cancel = false;
|
Re: Warum klappt Abmeldung bei laufendem Programm nicht?
Zitat:
Code:
benutzen. Sollte nun wirklich funktionieren, da es so sogar im MSDN zu finden ist ;) .
e.Cancel = !shuttingDown;
|
Re: Warum klappt Abmeldung bei laufendem Programm nicht?
Ja, das ist ne gute Idee. Probier ich morgen mal, für heute ist mein VS zu müde ;)
Danke für die Antworten. Und probiert das Programm mal aus und gebt Feedback :D |
Re: Warum klappt Abmeldung bei laufendem Programm nicht?
So, ich habs jetzt so gemacht, wie Khabarakh vorgeschlagen hat, mit dem Shutdown-Flag. Zu Sicherheit wird auch noch eine 1 zurückgegeben in der Fensterprozedur (auch wenn das durch den Basisaufruf ohnehin passieren sollte, aber sicher ist sicher).
Code:
So funktioniert das ganz gut :)
const int WM_QUERYENDSESSION = 0x11;
protected override void WndProc(ref Message m) { if (m.Msg == WM_QUERYENDSESSION) { m.Result = new IntPtr(1); // signal windows to proceed endSession = true; // set flag that closing of form shouldn't be declined } base.WndProc(ref m); } Danke an alle! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 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