![]() |
Auf Herunterfahren reagieren [w/ Forms]
Hallöchen,
Ich weiß nun, dass man mit: procedure WMQueryEndSession(var Msg: TMessage); message WM_QUERYENDSESSION; procedure WMEndSession(var Msg: TMessage); message WM_ENDSESSION; und einer Form auf das Herunterfahren von Windows reagieren kann... message sollen allerdings nur mit einer Form funktionieren, weiß jemand, wie man das auch mit einer No-Form *Exe machen kann? Also eine Anwendung ohne Forms, aber dass sie trotzdem auf das Herunterfahren von Windows reagieren kann? Danke im Vorhinein ;) |
AW: Auf Herunterfahren reagieren [w/ Forms]
Über ein
![]() (oder einfach über eine unsichtbare Form) PS: Nicht vergessen eine Nachrichtenschleife einzubauen, damit diese Nachrichten auch verarbeitet werden können. :stupid: |
AW: Auf Herunterfahren reagieren [w/ Forms]
Gut! Dankeschön!
Ich werde mir das mal anschauen :-D |
AW: Auf Herunterfahren reagieren [w/ Forms]
Hmmm, eigentlich hatte ich irgendwann mal was zu diesen MessageOnlyWindows geschrieben, aber die Forensuche scheint das wohl nicht mehr zu finden.
Also entweder du nimmst ein TForm, das NonVCL-Equivalent über ![]() Oder eben den offiziellen Weg für ein MessageOnlyWindow (irgendwo im MSDN sollte sich ein Artikel dazu finden lassen). > siehe nachfolgenden Code, aber ohne das SetWindowLong In der Nachrichtenschleife dann einfach auf das Handle der Form reagieren. Oder du erstellst dir eine neue WindowClass, registrierst sie, mit einem eigenem StandardWindowProc und reagierst dann in dieser Prozedur. > statt Message/Static dann deine eigene Klasse nehmen Oder eben über MakeObjectInstance eine Methode ala ![]()
Delphi-Quellcode:
VI.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
If GetVersionEx(VI) and (VI.dwMajorVersion >= 5) Then S := 'Message' Else S := 'STATIC'; FHandle := CreateWindowEx(WS_EX_TOOLWINDOW, PChar(S), nil, WS_POPUP, 0, 0, 0, 0, 0, 0, HInstance, nil); SetWindowLong(FHandle, GWL_WNDPROC, Integer(MakeObjectInstance(YourWndMethod))); In allen Fällen mußt du aber eine MessageLoop/Nachrichtenschleife verwenden. (in einem VCL-Programm steckt diese Schleife in Application.Run drin und ohne diese mußt du eben deine eigene Schleife bauen) ... dazu sollten sich aber Massig Infos und Beispiele in der DP anfinden. z.B. ![]() oder siehe ![]() [add] OK, einwas war doch noch zu finden. ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:39 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