1. Die Bearbeitung von WM_SYSCOMMAND (procedure WMSysCommand) weglassen.
2. Ich persönlich finde dieses Verhalten zwar unschön, aber du rufst den
TNA-Code, den du im "OnCreate" findest einfach im "OnClose"-Ereignis der Form auf. Statt
Application.ShowMainForm := False;
benutzt du aber
self.Hide;
und setzt die Variable "Action" (aus dem OnClose-Prozedurkopf) auf
caNone. Ich empfehle eine zusätzliche Variable (bool-Typ, bspw.), damit das Programm auch beendet werden kann.
Das erwartet man ja eigentlich auch. Wie gesagt: ist nur
meine Meinung, aber ich finde das Ändern von einem erwarteten Verhalten (Schließen in dem Fall) weniger schön. Es kommt aber auf´s Programm an. Bei einer Firewall akzeptiere ich das noch.
3. Indem du die Zeilen
Delphi-Quellcode:
Owner := GetWindow(
Handle, GW_OWNER);
ShowWindow(Owner, SW_HIDE);
suchst und auskommentierst.
4. Über einen Parameter am besten. Trag es im Autostart etwa so ein
Diesen Parameter wertest du beim Start aus. Ist er vorhanden, startest du das Programm evtl. gleich minimiert ... oder was auch immer. Ist er nicht vorhanden, dann startet es normal. Dazu müsstest du den
TNA-Code in "OnCreate" auch dort lassen und seine Ausführung eben nur vom ermittelten Parameter abhängig machen
Delphi-Quellcode:
if(paramstr(1) = '/autorun') then begin
Application.ShowMainForm := False;
{ usw. }