![]() |
Programm in der TNA Windows kann nicht herunterfahren
hallo,
egal was ich mache Abmelden oder neustarten oder herunterfahren - mein Programm verhindert das.. dann fand cih hier in der CodeLib diesen Code:
Delphi-Quellcode:
procedure tmain_form.WMQUERYENDSESSION(var msg: TMessage);
begin msg.Result := 1; close; end; So weit so gut nun geht es aber erst nach dem ich 2 mal auf abmelden klickte oder 2 mal auf neustarten klickte. Was noch merkwürdiger ist, ist wenn ich dies nehme
Delphi-Quellcode:
So erscheint die MEssage NICHT schon beim ersten versuch des reboots /abmelden sondern erst beim 2 mal
procedure tmain_form.WMQUERYENDSESSION(var msg: TMessage);
begin ShowMessage('Windows geht nu put'); // scherzhaft msg.Result := 1; close; end; Also so wie ich das nun sehenreagiert aus welchen grunde mein programm erst beim zweiten mal sende der Nachricht von Windows auf die WMQUERYENDSESSION Jemand eine idee?! |
Re: Programm in der TNA Windows kann nicht herunterfahren
Also soweit sieht es OK aus, höchstens bei Close; könnte ein Fehler liegen.
Laß dieses Close mal weg und versuch ob's ohne geht. Der Rest scheint fehlerfrei, allerdings weiß ich nicht wie der Rest deiner Anwendung aussiehtund wie du diese Funktion genau in deine Form integriert hast. Hab den Thread zwar nicht so verfolgt, aber dort geht's anscheinend auch darum. ![]() Eventuell könntest du noch versuchen auch noch WM_ENDSESSION zu verarbeiten :gruebel: |
Re: Programm in der TNA Windows kann nicht herunterfahren
Also ich habe es auch viele Arten versucht:
Windows benötigt immer 2 anläufe sich zu beenden wenn mein Programm aktiv -- und mein Programm reagiert auch erst beim 2ten mal auf die Beenden Message von Windows... (Geprüft mittels MessageShow) Ich habe folgende Codes bzw. Varianten versucht:
Delphi-Quellcode:
procedure TForm1.shutdownevent(var Msg:TWMQUERYENDSESSION);
begin Msg.Result:=1; close; // <= ohne dieses zusätzliche Schliessen ging es nicht Inherited; end;
Delphi-Quellcode:
procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);
begin Inherited; Message.Result := 1; end;
Delphi-Quellcode:
procedure TForm1.WMQueryEndSession (var M: TWMQueryEndSession);
begin inherited; //Wichtig Application.Terminate; end; Habe auch schon CanClose aus der Anwendung entfernt... Hilft alles nichts :-( |
Re: Programm in der TNA Windows kann nicht herunterfahren
habe nun herausgefunden, das Windows bzw. mein Programm nur auf die
WM_ENDSESSION reagiert anstatt wie ich überall gelesen auf WM_QUERYENDSESSION Soweit so gut habe nun
Delphi-Quellcode:
procedure WMEndSession(var Msg:TWMEndSession); message WM_ENDSESSION;
procedure tmain_form.WMEndSession(var Msg:TWMEndSession); begin //Windows erlauben zu beenden Msg.Result := 1; //Programm schliessen close; inherited; end; Das funktioniert in so weit, dass das Programm beendet wird - aber Windows bricht dann zugleich auch den beenden vorgang ab und muss nochmal auf abmelden/neustarte klicken... also irgendwie immer noch keine Lösung ;-( Vorsorglich habe ich nun aber auch das noch mit drinne
Delphi-Quellcode:
procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION;
procedure tmain_form.WMQueryEndSession (var Msg : TWMQueryEndSession); begin //Windows erlauben zu beenden Msg.Result := 1; //Programm schliessen close; inherited; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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