![]() |
Wie beendet Windows mein Programm
Wenn man den Computer ausschaltet oder den Benutzer abmeldet, werden ja alle Programme geschlossen, nur meins nicht. Ich hab' Win XP Home und wenn ich dann abmelden drücke, werden Firewall und alles andere, was sonst noch so läuft beendet, dann kommt dieser blaue Bildschirm, wo draufsteht, dass man abgemeldet wird...
Und dann hab' ich auf einmal den Desktop wieder und mein Programm läuft noch. Info zu meinem Programm: Mein Programm ist ein Chatprogramm, was immer in der Tystemtray auf Nachrichten vom großen Computer wartet. Das ganze habe ich mit einem RxTrayIcon umgesetzt. -------------------------------------------------- Als ich nachgedacht habe,bin ich auf folgende Lösung gekommen: Ich fange die NAchricht ab, die Windows beim Herunterfahren an die noch laufenden Programme sendet und reagiere darauf... Probleme: 1.Schickt Windows überhaupt Nachrichten oder nimmt es einfach die Anwendungen aus dem Speicher... 2.Welche Nachricht schickt Windows? 3.Wie fange ich die ab? Wenn ich mir jetzt das eben verfasste anschaue fällt mir auf, dass ich noch verdammt viel zu lernen habe :cry: Aber dafür, dass ich mir das ganze selbst beibringe, hab ich's schon ziemlich weit geschafft! :-D Bitte helft mir!!!! |
Re: Wie beendet Windows mein Programm
|
Re: Wie beendet Windows mein Programm
Guck mal bei den Schweizern:
![]() Oder in der DP per Suche: ![]() |
Re: Wie beendet Windows mein Programm
Super! Ich werd's gleichmal ausprobieren, aber ich denke schon, dass was dabei ist!
Ich schreib dann spätestens morgen [Jetzt: 27.12.03; 22-11], ob's geklappt hat! :mrgreen: |
Re: Wie beendet Windows mein Programm
Das Problem ist bekannt bei der Komponentensammlung, habe ich schon öfters gelesen.
|
Re: Wie beendet Windows mein Programm
Prinzipiell muss man auf WM_QUERYENDSESSION und WM_ENDSESSION reagieren.
Man muss eventuell offene Forms schliessen, da eine zweite offene Form sonst alle Bemuehungen sich zu benehmen verhindert. Wenn man ein FormDestroy hat und sich bei WM_ENDSESSION beendet wird FormDestroy nicht mehr aufgerufen, da kein WM_QUIT mehr kommt. |
Re: Wie beendet Windows mein Programm
Ich hab' das gestern abend mal bei runterfahren ausprobiert:
Mein Programm wird tatsächlich beendet, allerdings werden danach keine anderen Programme mehr beendet. Mein Programm fängt die Nachricht den anderen Programmen weg. Wenn man dann nochmals auf runterfahren oder abmelden klickt geht es dann allerdings. Wie kann jetzt dieses Wegfangen verhindern? Edit: Ich habe die procedure WMENDQUERYSESSION in das Hauptformular eingebunden, das ist auch das, welches in der Systray schlummert. In der procedure wird dann Application.Terminate aufgerufen. |
Re: Wie beendet Windows mein Programm
Ein Close auf das eigene Hauptformular sollte genuegen.
Zeig mal deine WMQueryEndSession und WMEndSession Methoden. |
Re: Wie beendet Windows mein Programm
Du musst eins oder True zurückgeben, um Windows zu sagen, dass es weiter runterfahren darf.
|
Re: Wie beendet Windows mein Programm
Mein Quellcode:
Delphi-Quellcode:
procedure TTitel.WMQueryEndSession(var M: TWMQueryEndSession);
begin inherited; Application.Terminate; end; Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 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