![]() |
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?
|
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 |
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:
definieren, in der die Variable auf False gesetzt wird. Im Closequery wurde ich die Messagebox nur anzeigen, wenn meine private Variable auf True steht.
procedure TMeinForm.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin MeineVariable := False; Msg.Result := integer(true); end; Damit sollte Dein Problem gegessen sein. |
Re: Windows wartet beim beenden auf mein Progr. Wie vehinder
Danke für die schnelle Reaktionen!
Zitat:
Mache ich etwas falsch? |
Re: Windows wartet beim beenden auf mein Progr. Wie vehinder
Reagierst Du denn auch auf WM_QUERYENDSESSION?
|
Re: Windows wartet beim beenden auf mein Progr. Wie vehinder
Zitat:
Wie mache ich das? |
Re: Windows wartet beim beenden auf mein Progr. Wie vehinder
Im private-Abschnitt Deines Forms trägst Du das hier ein:
Delphi-Quellcode:
Im implementation-Teil dann das, was weiter oben bereits gepostet wurde.
procedure WMQueryEndSession(var Msg: TWMQueryEndSession);
message WM_QUERYENDSESSION; |
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. |
Re: Windows wartet beim beenden auf mein Progr. Wie vehinder
Danke Euch allen! Es klappt! ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 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