Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi OnCloseQuery ohne Forms (https://www.delphipraxis.net/75848-onclosequery-ohne-forms.html)

blackdrake 25. Aug 2006 22:39


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:
program Test;

begin
  // Vor Schleife

  while not WindowsBeendetSich do
  begin
    // Schleife, bis Windows heruntergefahren/neugestartet wird
  end;

  // Abschließende Arbeiten
end.
Ich möchte also eine Art OnCloseQuery nutzen bzw. eine Funktion haben, die true wird, sobald sich Windows im Herunterfahren-Prozess begibt.

Kann mir jemand helfen?

TBx 25. Aug 2006 22:44

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

blackdrake 25. Aug 2006 23:10

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

DGL-luke 25. Aug 2006 23:43

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:

Ydobon 25. Aug 2006 23:54

Re: OnCloseQuery ohne Forms
 
Ich kann gerade meinen Rechner nicht herunterfahren, aber vielleicht funktioniert ja AllocateHWnd, das braucht nur Classes.

blackdrake 26. Aug 2006 02:33

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:
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.
Gruß
blackdrake

blackdrake 27. Aug 2006 00:32

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?

jfheins 27. Aug 2006 08:10

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 ;)

Cyberbob 27. Aug 2006 08:17

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 12:18 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