Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Eigenes Programm automatisch beenden
alex_id - Di 25.03.03 06:48
Titel: Eigenes Programm automatisch beenden
Hi
Da ich mein Programm in den taskmanager einbinden möchte soll es sich nach getaner Arbeit selbst schliessen!!!
Aber wie ??? :( Denn mit "Form1.Close" geht es nicht denn ich hab es mit einen einfachen Programm getestet zB : müsste sich folgendes Programm sofort nach dem Start wieder selbst beenden :
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| unit test; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Form1.close; end; end. |
oder muss ich das auf eine andere Art und Weise tun :?:
Alex
BungeeBug - Di 25.03.03 07:47
Hi
ich würde Application.Terminate; nehmen, das sollte (wenn ich mich nicht irre) die entsprechende Windowsfunktion sein die das erledigt
MfG BungeeBug
Motzi - Di 25.03.03 08:29
Application.Terminate sollte nach Möglichkeit nicht verwendet werden, da in diesem Fall nur eine WM_QUIT Message erzeugt wird (genauere Erläuterung dazu hab ich schon mehrmals gepostet. Bei Interesse einfach suchen...)
Zu dem Thema Formular im OnCreate-Ereignis schließen gab es auch schonmal eine längere Diskussion (gelle Popov? :wink:)
Meine favorisierte Methode in diesem Fall ist
Quelltext
1:
| PostMessage(Handle, WM_CLOSE, 0, 0); |
Aber auch hier gilt einfach mal die Suchfunktion anwerfen...
Tino - Di 25.03.03 12:30
Also ich würde das Hauptfenster schließen und fertig.
Gruß
Tino
Motzi - Di 25.03.03 14:44
Tino hat folgendes geschrieben: |
Also ich würde das Hauptfenster schließen und fertig.
Gruß
Tino |
Es gibt aber Situationen in denen ein Aufruf von Close nicht funktioniert (aus welchen Gründen auch immer...). War bei mir schon mehrmals der Fall, aber die Methode mit PostMessage funktioniert jedesmal perfekt...
Delete - Di 25.03.03 14:56
Sieht so aus, als wenn du das Fenster gar nicht brauchst, da du es im OnCreate-Ereignis gleich wieder schließt. Dann mach doch eine Konsolen-Anwendung. Oder noch nicht mal das und entfern die Unit des Formulares aus deinem Programm und schreib deinen Code in die Projekt-Datei.
Tino - Di 25.03.03 15:01
Motzi hat folgendes geschrieben: |
Es gibt aber Situationen in denen ein Aufruf von Close nicht funktioniert |
Bei mir hat es bislang immer funktioniert.
Gruß
Tino
alex_id - Mi 26.03.03 01:34
Hi Leute
Danke für die Tips !!!
Ich habe mich für die Variante von "BungeeBug" entschlossen und es funktioniert wunderbar !!! (Application.Terminate;)
danke
Alex
Delete - Mi 26.03.03 01:35
Warum hast du ein Fenster, wenn du es nicht brauchst?
alex_id - Mi 26.03.03 01:44
Hi Luckie
Da mit nur einem Fenster war nur ein Beispiel !!!
Ich will ein paar informationen anzeigen und dann soll sich das Prog von selber schließen ... ich weiß klingt etwas umständlich :roll:
aber ich hätte es auch ohne diese Informationen machen können, aber nur durch probieren lernt man mehr :D
Alex
recall - So 10.08.03 14:46
Hallo,
hmm... ich bin gerade auf den Beitrag gestoßen und hatte den ersten Quelltext gelesen:
On Create => Form1.Close;
Wie soll man denn ein Formluar schließen, das noch gar nicht erzeugt wurde ???
Daher tippe ich mal, dass hier der Aufruf von Close nicht funktioniert (@Tino)
Viele Grüsse.
P.S.: Der Aufruf geht auch nicht in OnShow, weiß jemand wieso ?
Das Fenster existiert ja schon nur ists halt nicht sichtbar :)
UC-Chewie - So 10.08.03 15:44
Im OnCreate-Ereignis ist das Fenster im Übrigen schon erzeugt.
recall - So 10.08.03 17:43
Woher weisst du das ?
Auszug aus der Delphi-Hilfe:
Zitat: |
Use OnCreate to perform special processing when the form is created ... |
Ist das jetzt wirklich schon erzeugt ?
Wenn ich es übersetze, dann heisst das: Während es erzeugt wird !? :(
Viele Grüsse.
AndyB - So 10.08.03 18:35
Es ist noch nicht sichtbar. Das Fensterhandle existiert aber bereits.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!