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/)
-   -   Delphi Windows wartet beim beenden auf mein Progr. Wie vehindern? (https://www.delphipraxis.net/117106-windows-wartet-beim-beenden-auf-mein-progr-wie-vehindern.html)

romber 11. Jul 2008 15:44


Windows wartet beim beenden auf mein Progr. Wie vehindern?
 
Ich habe ein kleines Updateprogramm erstellt, dass mit Windows startet, immer aktiv ist und durch Klick auf TrayIcon geöffnet werden kann. In OnCloseQuery der Hauptform habe wird eine MessageBox erstellt, in der Benutzer gefragt wird, ob das Programm wirklich beendet werden soll. Das Problem ist, dass diese Meldung auch erscheint, wenn Windows beendet wird. Das möchte ich verhindern. Wir kann ich das machen?

HeinzJ 11. Jul 2008 15:50

Re: Windows wartet beim beenden auf mein Progr. Wie vehinder
 
Vielleicht in dem du das "Windowsereignis" vom Aufrufen der Messagebox ausschließt oder nur auf Benutzereingaben per Maus und Tastatur reagierst.

HeinzJ

HeikoAdams 11. Jul 2008 16:00

Re: Windows wartet beim beenden auf mein Progr. Wie vehinder
 
Ich würde eine private Variable definieren, die z.B. standardmäßig auf True steht. Dann würde ich in meinem Hauptform eine Procedure
Delphi-Quellcode:
procedure TMeinForm.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
  MeineVariable := False;
  Msg.Result := integer(true);
end;
definieren, in der die Variable auf False gesetzt wird. Im Closequery wurde ich die Messagebox nur anzeigen, wenn meine private Variable auf True steht.
Damit sollte Dein Problem gegessen sein.

romber 11. Jul 2008 17:21

Re: Windows wartet beim beenden auf mein Progr. Wie vehinder
 
Danke für die schnelle Reaktionen!

Zitat:

Zitat von HeikoAdams
Damit sollte Dein Problem gegessen sein.

Leider nicht. :( Ich habe in der Deklaration der Form im Abschnitt private eine Variable erstellt, die dann in OnCreate auf true gesetzt wird. Dann überpüfe ich diese Variable in OnClose. Trotzdem erscheint die Meldung, wenn ich Windows beenden möchte.

Mache ich etwas falsch?

DeddyH 11. Jul 2008 18:09

Re: Windows wartet beim beenden auf mein Progr. Wie vehinder
 
Reagierst Du denn auch auf WM_QUERYENDSESSION?

romber 11. Jul 2008 18:19

Re: Windows wartet beim beenden auf mein Progr. Wie vehinder
 
Zitat:

Zitat von DeddyH
Reagierst Du denn auch auf WM_QUERYENDSESSION?

Eigentlich nicht. :gruebel:
Wie mache ich das?

DeddyH 11. Jul 2008 18:22

Re: Windows wartet beim beenden auf mein Progr. Wie vehinder
 
Im private-Abschnitt Deines Forms trägst Du das hier ein:
Delphi-Quellcode:
procedure WMQueryEndSession(var Msg: TWMQueryEndSession);
  message WM_QUERYENDSESSION;
Im implementation-Teil dann das, was weiter oben bereits gepostet wurde.

SirThornberry 11. Jul 2008 20:04

Re: Windows wartet beim beenden auf mein Progr. Wie vehinder
 
Wenn du das das Programm über das Trayicon anzeigst brauchst du ja nichtmal auf diese Message reagieren. Dann wäre es doch das einfachste im OnCloseQuery nur nachzufragen wenn das Programm auch sichtbar ist.
Denn nur wenn es sichtbar ist kann es durch den Nutzer per Maus bzw. Alt+F4 beendet werden. In allen anderen Fällen wird es also nicht direkt durch den Benutzer beendet.

romber 11. Jul 2008 20:27

Re: Windows wartet beim beenden auf mein Progr. Wie vehinder
 
Danke Euch allen! Es klappt! ;)


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