Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Programm ohne "Main Form" starten und beenden
Christian213 - Di 25.06.13 12:27
Titel: Programm ohne "Main Form" starten und beenden
Hallo,
wahrscheinlich ist mein heutiges Problem trivial:
Ich möchte eine Anwendung im Regelfall ohne sichtbaren Dialog laufen lassen.
Den/die Dialog(e) möchte in manuell im Bedarfsfall (=Fehlerfall) anzeigen lassen.
Dazu habe ich die "Main Form" in den Projekteinstellungen aus dem "Auto Create" entfernt.
In der Main Unit habe ich nun folgendes stehen:
Delphi-Quelltext
1: 2: 3: 4:
| begin Application.Initialize; Application.Run; end. |
Der Dialog bleibt auch unsichtbar, jedoch beendet sich das Programm nicht mehr.
Ich vermute, dass es auf das OnClose-Event wartet.
Wie kann ich das Programm an sich beenden?
Und: Muss Application.Initialize und Application.Run grundsätzlich erfolgen, auch wenn ich gar keinen Dialog öffnen möchte?
Oder ist gar hier genau mein Denkfehler?
Danke und Gruß
Christian
WasWeißDennIch - Di 25.06.13 13:00
Was meinst Du mit Dialog, generell alle Fenster? Was soll Dein Programm denn tun?
jaenicke - Di 25.06.13 13:03
Du musst zwischen begin und end gar nichts stehen haben, nur beendet sich das Programm dann auch sobald aller Code, der dort steht, abgearbeitet ist. Ich denke mal das ist was du möchtest.
Application.Run führt eine Schleife aus, die Nachrichten abarbeitet bis das Programm beendet wird. Das willst du aber ja gar nicht, du willst ja eigenen Code stattdessen asuführen.
Christian213 - Di 25.06.13 13:20
WasWeißDennIch hat folgendes geschrieben : |
| Was meinst Du mit Dialog, generell alle Fenster? Was soll Dein Programm denn tun? |
Mein Programm tut verschiedene Dinge auf Dateiebene und Registry und startet anschließend ein anderes Programm mittels ExecuteProcess nach.
Dann soll es sich selbst beenden.
Die Form (und das Window) sollen nur dann geöffnet werden, wenn Benutzer-Interaktion notwendig sind.
Christian213 - Di 25.06.13 13:32
jaenicke hat folgendes geschrieben : |
Du musst zwischen begin und end gar nichts stehen haben, nur beendet sich das Programm dann auch sobald aller Code, der dort steht, abgearbeitet ist. Ich denke mal das ist was du möchtest.
Application.Run führt eine Schleife aus, die Nachrichten abarbeitet bis das Programm beendet wird. Das willst du aber ja gar nicht, du willst ja eigenen Code stattdessen asuführen. |
Hm, klingt logisch. Doch selbst wenn ich zwischen "begin" und "end." nicht stehen habe, bleibt der Prozess laufen. Ich muss dann in der IDE auf "Stop" klicken oder wenn ich die EXE manuell starte diese im Taskmanager killen...
WasWeißDennIch - Di 25.06.13 13:41
Du kannst Deinen Code auch in die dpr schreiben und dort ggf. das Formular bei Bedarf laden und anzeigen.
Christian213 - Di 25.06.13 13:53
WasWeißDennIch hat folgendes geschrieben : |
| Du kannst Deinen Code auch in die dpr schreiben und dort ggf. das Formular bei Bedarf laden und anzeigen. |
Haha! Das war der entscheidende Tipp! Das File war leider standardmäßig im Code-Explorer geschlossen, daher habe ich folgendes nicht gesehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| (...) begin RequireDerivedFormResource := True; Application.Initialize; Application.Run; end. |
Vielen Dank an alle!
Gruß,
Christian
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!