Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem WMQUERYENDSESSION mit CoolTrayIcon (https://www.delphipraxis.net/37482-problem-wmqueryendsession-mit-cooltrayicon.html)

---Bernhard--- 6. Jan 2005 13:08


Problem WMQUERYENDSESSION mit CoolTrayIcon
 
Hallo!

Ich hab ein Programm geschrieben, was standardmäßig CanClose:=false ist (außer man gibt das Passwort ein). Nun möchte ich aber, dass das Programm beendet wird, wenn Windows herunterfährt. Dazu habe ich den Source von hier (klick!) genommen.

Der Source schaut so aus:
Delphi-Quellcode:
procedure TForm1.WMQUERYENDSESSION(var msg: TMessage);
begin
  ShowMessage('Windows wird beendet.');
  msg.Result := Integer(TRUE); //  TRUE: darf weiter runterfahren; FALSE: nicht runterfahren
  mayclose:= true;
  close;
end;
Die Probleme:
- Die Procedure wird jedoch nur ausgeführt, wenn das Fenster sichtbar ist. (Benutze die Komponente "CoolTrayIcon")
- Ist das Fenster sichtbar, wird die Procedure ausgefürht, dass Programm beendet, jedoch das herunterfahren abgebrochen! Ich muss also zweimal auf herunterfahren gehen. :/

Wie kann ich diese Probleme beheben?

Hoffe ihr könnt mir weiterhelfen. :)

Vielen Dank im Vorraus, Bernhard

PS: Nur mal ganz nebenbei: Wenn ich zweimal auf Herunterfahren gehe, ist "Inaktive Symbole ausblenden" unter den TNA-Einstellungen deaktiviert (XP). Womit hängt denn das zusammen??

Helmi 6. Jan 2005 13:11

Re: Problem WMQUERYENDSESSION mit CoolTrayIcon
 
Hallo,

ich hatte mal das gleiche Problem und ich hab das so geändert:

Ich habe eine Variable genommen
Code:
private
  Windows_Session_End;
die bei:
Code:
procedure TForm1.Create(Sender: TObject);
begin
  Windows_Session_End := false;
end;
auf false als default-Wert gesetzt wird und bei:

Code:
procedure TForm1.WMQUERYENDSESSION(var msg: TMessage);
begin
  ShowMessage('Windows wird beendet.');
  msg.Result := Integer(TRUE); //  TRUE: darf weiter runterfahren; FALSE: nicht runterfahren
  mayclose:= true;
  close;
end;
auf true gesetzt wird.

Diese Variable setzt dann das CanClose auf true und schon gehts.

---Bernhard--- 6. Jan 2005 13:19

Re: Problem WMQUERYENDSESSION mit CoolTrayIcon
 
@Helmi:

Das ist aber leider nicht mein Problem
Das gleiche was du mit der Variable "Windows_Session_End" machst mach ich mit der Variable "MayClose" ;)

Doch wenn das Programm "versteckt" ist (Also in die TNA minimiert) wird "TForm1.WMQUERYENDSESSION" nicht ausgeführt.

Nur wenn das Fenster sichtbar ist, kommt diese Procedure zum Einsatzt. Das Programm wird daruafhin auch korrekt beendet, jedoch wird das Herunterfahren abgebrochen...

---Bernhard--- 7. Jan 2005 17:46

Re: Problem WMQUERYENDSESSION mit CoolTrayIcon
 
Habe eben noch etwas experimentiert und da ist mit aufgefallen, dass das von einem anderem Forumular kommt. Das hab ich jetzt mal rausgeschmissen und es geht :)

Danke trotzdem für eure Hilfe


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