Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi VCL-Anwendung ohne sichtbares Fenster starten (https://www.delphipraxis.net/95967-vcl-anwendung-ohne-sichtbares-fenster-starten.html)

scrat1979 16. Jul 2007 22:25


VCL-Anwendung ohne sichtbares Fenster starten
 
Hallo zusammen,

ich möchte mir ein kleines Tool schreiben, welches ich in den Autostart integrieren möchte. Sinn dieses Programmes ist es, zu prüfen, ob ein anderes Programm vor >=x Tagen gestartet wurde. Falls nein, dann soll das Tool dieses Programm aufrufen und in eine INI-Datei das Datum der letzten Ausführen speichern. Soll also eine Art "Mikro-Taskplaner beim Systemstart" werden (Es soll ein Programm für Backup-Zwecke mind. alle 3 Tage - nach dem Systemstart - ausgeführt werden). Der Windows-Taskplaner kommt für mich nicht in Frage, da 1. deaktiviert und 2. ein kennwortgeschütztes Konto benötigt wird, welches ich auf meinem privaten REchner weder habe noch brauche :-)

Meine Frage: Ich möchte nun, daß das Programm "im Hintergrund" gestartet wird, d.h. es soll keine DOS-Box-Anwendung werden und es sollen auch keine Fenster angezeigt werden.

Wie gehe ich denn da am besten vor? Hab mal testweise eine ShowMessage bei Form1.Create eingefügt und beim Projekt-Quellcode Application.ShowMainForm := False gesetzt. Das Ergebnis ist das Gewünschte, aber irgendwie kommt es mir doch sehr unsauber vor :oops:

Hat jemand von Euch eine andere, saubere Lösung für mich parat??

SCRaT

//EDIT: Das Programm soll, nachdem die aufgerufene Anwendung ausgeführt wurde, wieder beendet werden.

Apollonius 16. Jul 2007 22:42

Re: VCL-Anwendung ohne sichtbares Fenster starten
 
Sollen überhaupt keine Fenster angezeigt werden? Nie?

scrat1979 16. Jul 2007 22:50

Re: VCL-Anwendung ohne sichtbares Fenster starten
 
Richtig, ich möchte lediglich eine andere Anwendung starten, nachdem geprüft wurde, ob diese innerhalb der letzten x Tage noch nicht ausgeführt wurde. Dazu möchte ich keinerlei Fenster (also meines Tools) anzeigen lassen...

EDIT: Mir ist grad eine Idee eingefallen: Könnte ich die "Prüfroutine" nicht einfach in die Projektdatei einfügen und sämtliche Formulare rauslöschen?

Christian Seehase 16. Jul 2007 22:53

Re: VCL-Anwendung ohne sichtbares Fenster starten
 
Moin Scrat,

das sehe ich prinzipiell drei Möglichkeiten:
  1. Application.ShowMainForm := false
    Da Du für Deinen Anwendungszweck nun aber so gar kein Fenster brauchst, ist eine normal VCL-Anwendung vielleicht übertrieben.
    (was daran unsauber sein soll, kann ich allerdings nicht sehen :gruebel:)
  2. Konsolenanwendung, aber {$APPTYPE CONSOLE} wird entfernt.
    Kein Fenster (auch kein Konsolenfenster).
    Sollte funktionieren, aber 1. halte ich da noch für sauberer
  3. Ein Dienst (TServiceApplication)
    (gefällt mir in diesem Zusammenhang noch am Besten ;-))

scrat1979 16. Jul 2007 23:01

Re: VCL-Anwendung ohne sichtbares Fenster starten
 
Danke für die Antwort!!!

Mit unsauber meinte ich - wie Du schon sagst - dass eine VCL-Anwendung etwas zu übertrieben ist..

Dann werde mich mal daran machen, meinen ersten Versuch in Sachen Dienst-Programmierung zu unternehmen... Falls Fragen aufkommen sollten (leider sehr wenige bis gar kein Tutorial beim googlen gefunden), dann seid Ihr ja - wie immer - zur Stelle :-)

Liebe Grüsse,

SCRaT

scrat1979 16. Jul 2007 23:22

Re: VCL-Anwendung ohne sichtbares Fenster starten
 
Ok, habe mir mal ein Mini-Dienst mit einer ShowMessage nach 5s (Timer) erstellt. Funktioniert auch schon ganz gut. Nur, wie kann ich denn den Dienst wieder (nach dem Showmessage) beenden?!? Ein Service1.Terminate, Application.Terminate etc. war leider nicht erfolgreich...

SCRaT

//EDIT: Die Forensuche brache ein Service1.DoStop; zum Vorschein, leider bekomme ich dann eine Exception und der Dienst läuft weiter...

Gute N8 und bis morgen,
SCRaT


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