![]() |
Programm verhindert Windows-Shutdown/-Logoff
Hi,
ich war eigentlich der Meinung schonmal die Frage gestellt zu haben, aber kann den Thread einfach nicht wieder finden und damals gab es auch keine Antwort. :? Mein Problem ist, dass mein schöner WallpaperChanger den Herunterfahr-Vorgang bzw. das Ausloggen verhindert. D.h. alle anderen Programme beenden sich brav, nur meine Software bleibt offen und Windows fährt nicht herunter. Ich habe mich jetzt stundenlang nach der Ursache durch den Code und fast alle Komponenten gewühlt, konnte aber keinen Fehler finden. :wall: Ich habe ursprünglich die Komponente TJvTrayIcon, die ich für die Anzeige des TNA-Icon verwende, verantwortlich dafür machen wollen, aber nachdem ich mehrmals die Komponente deaktiviert habe und es in anderen Anwendungen zu keinen Problemen kommt, scheint diese Komponente nicht der Übeltäter zu sein. Andere 3rd Party-Komponenten verwende ich eigentlich nicht. Also dachte ich, dass ich irgendwo vergessen habe, auf Nachrichten zu reagieren, aber ich fange in meinem Hauptformular nur die WM_DROPFILES-Nachricht ab. An anderer Stelle habe ich mir aber ein Handle erzeugt und eine dazugehörige WndProc geschrieben:
Delphi-Quellcode:
Eigentlich sollte die doch alles wichtige, durch das DefWindowProc abdecken, oder nicht? :gruebel:
procedure THotkeyItem.MsgProc(var msg: TMessage);
begin // Nachrichtenschleifen if msg.Msg = WM_HOTKEY then if Assigned(FOnHotkey) then fOnHotKey(self, self.Name) else DefWindowProc(FHandle, msg.Msg, msg.WParam, msg.LParam); end; Ich bin gerne bereit weitere Teile des Source zu posten, aber mir fällt jetzt nichts weiter ein, an welchen Stellen es liegen könnte. Liegt es möglicherweise doch an der WndProc der JvTrayIcon-Komponente? Irgendjemand eine gute Idee? Chris |
Re: Programm verhindert Windows-Shutdown/-Logoff
Schließt du auch brav alle Handles etc? Vllt ist noch was offen und deshalb streikt Windows :gruebel:
|
Re: Programm verhindert Windows-Shutdown/-Logoff
Hi,
ich hatte bei meinem Background Changer genau das gleiche Problem. Nur weiß ich auch nicht mehr, woran genau es gelegen hatte. ![]() Aber vielleicht bringt's dich auch gar nicht weiter. |
Re: Programm verhindert Windows-Shutdown/-Logoff
Hmm...
Eigentich sollten alle Handles wieder dealloziert werden. Es gibt nur eine Klasse, in der ich im Konstruktor ein Handle erstellen, aber dort gebe ich selbiges wieder im Destruktor frei:
Delphi-Quellcode:
@Matze: ich gucke mal rein, danke dir. :)
constructor THotkeyItem.Create(Collection: TCollection);
begin inherited; // Handle erzeugen fHandle := Classes.AllocateHWnd(self.MsgProc); end; destructor THotkeyItem.Destroy; begin // Hotkey deregistrieren UnregisterHotkey; // Handle freigeben Classes.DeallocateHWnd(fHandle); inherited; end; Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 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 by Thomas Breitkreuz