![]() |
OnCloseQuery ohne Forms
Hallo.
Ich habe eine Anwendung, die einen Hintergrunddienst durchführt und keine Forms verwendet. Die Unit "Forms" ist nicht eingebunden. Ich möchte folgende Programmstruktur erzielen:
Delphi-Quellcode:
Ich möchte also eine Art OnCloseQuery nutzen bzw. eine Funktion haben, die true wird, sobald sich Windows im Herunterfahren-Prozess begibt.
program Test;
begin // Vor Schleife while not WindowsBeendetSich do begin // Schleife, bis Windows heruntergefahren/neugestartet wird end; // Abschließende Arbeiten end. Kann mir jemand helfen? |
Re: OnCloseQuery ohne Forms
Hallo!
Du solltest Dich mit der Programmierung von Systemdiensen vertraut machen. Ich denke, dort wirst Du finden, was Du suchst. Entsprechende Tutorials solltest Du in der DP finden. Gruß onlinekater |
Re: OnCloseQuery ohne Forms
Hallo.
Bis jetzt hat eine normale Anwendung ohne Forms prima Funktioniert. Die Schleife war eine while-true, jedoch möchte ich jetzt noch eine Aktion beim Herunterfahren durchführen. Es ist auch kein öffentliches Projekt, also muss es nicht absolut Perfekt sein. Gruß blackdrake |
Re: OnCloseQuery ohne Forms
Die WM_SYSTEMSHUTDOWNQUERY (oder wie auch immer die heisst) sollte doch auch im Thread bzw. process-queue irgendwie irgendwo ankommen... du solltest also immer mal wieder die Nachrichten abholen und dann schauen, ob die entsprechende dabei ist.
EDIT: ja... das ist eigentlcih NonVCL-Programmierung, also müsstest du einen ganz stinknromalen Message-Loop aufbauen können... oder...?! :gruebel: |
Re: OnCloseQuery ohne Forms
Ich kann gerade meinen Rechner nicht herunterfahren, aber vielleicht funktioniert ja AllocateHWnd, das braucht nur Classes.
|
Re: OnCloseQuery ohne Forms
Hallo.
Leider habe ich von der Windows API absolut keine Ahnung, deswegen sagen mir Message-Loops auch nichts. Unter Google habe ich nichts passendes mit meinen Schlagworten gefunden. Welche Parameter muss AllocateHWnd haben, damit ich abfragen kann, ob Windows herunterfahren will? Edit: Das hier geht auch nicht:
Delphi-Quellcode:
Gruß
program test;
uses Messages; {$R *.res} // Unbekannte direktive "message" procedure WMQueryEndSession(var Msg : TWMQueryEndSession); message WM_QueryEndSession; forward; procedure WMQueryEndSession(var Msg : TWMQueryEndSession); begin end; begin end. blackdrake |
Re: OnCloseQuery ohne Forms
Gibt es für mein Problem technisch keine Lösung? Ich muss dann scheinbar doch mit Forms arbeiten, nur damit ich OnCloseQuery nutzen kann, oder nicht?
|
Re: OnCloseQuery ohne Forms
Entweder, du arbeitest mit "Forms" und VCL und Komfort (und kannst dann TFormOnCloseQuery verwenden), oder:
Du verzichtest auf die VCL, deine Exe wird kleiner, und du musst alles per Hand machen (und Messages verwenden). Aber gerne die Vortele beider ohne Nachteile haben geht nicht ;) (vll. mit KOL ansatzweise - da kenn ich mich jetzt nit so aus ...) Such mal nach einem Tutorial für die API-Programmierung ohne die VCL - Luckie hat da auch mal eins geschrieben ;) |
Re: OnCloseQuery ohne Forms
Wenn du nur was machen Willst, wenn Windows runterfährt, kannst du unter XP Pro auch ein Programm bei/kurz vor dem Shutdown starten. Dieses wird allerdings erst dann gestartet.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 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