Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm verhindert Windows-Shutdown/-Logoff (https://www.delphipraxis.net/65618-programm-verhindert-windows-shutdown-logoff.html)

CalganX 18. Mär 2006 21:55


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:
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;
Eigentlich sollte die doch alles wichtige, durch das DefWindowProc abdecken, oder nicht? :gruebel:


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

MagicAndre1981 18. Mär 2006 21:59

Re: Programm verhindert Windows-Shutdown/-Logoff
 
Schließt du auch brav alle Handles etc? Vllt ist noch was offen und deshalb streikt Windows :gruebel:

Matze 18. Mär 2006 22:04

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. Hier war mein Thread dazu und evtl. interessant der letzte Beitrag.
Aber vielleicht bringt's dich auch gar nicht weiter.

CalganX 18. Mär 2006 22:07

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:
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;
@Matze: ich gucke mal rein, danke dir. :)

Chris


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