"Nicht da" kann vieles heißen! Du kannst einfach nur das Formular verstecken, Du kannst aber auch das Icon verstecken und Du kannst sogar das Programm aus dem Taskmanager verstecken.
Um das Formular einfach auszublenden ist der Ansatz mit
Delphi-Quelltext
1:
| Application.ShowMainForm:= false; |
ein guter Ansatz. Hier solltest Du aber überprüfen, ob Übergabeparamter angegeben sind und dieser Aufruf in eine Bedingung setzen.
Auch solltest Du Dir Gedanken darüber machen, wie Du das Programm aktiviert und damit auch sichtbar bekommst! Hier erscheint möglicherweise ein Icon in der NotificationArea sinnvoll.
Die Schaltfläche aus der Taskbar kannst Du mit folgendem Code ausblenden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.FormCreate(Sender: TObject); begin ShowWindow( Application.Handle, SW_HIDE ); SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow( Application.Handle, SW_SHOW ); end; |
Willst Du das Programm auch aus dem Taskmanager verschwinden lassen, womit Du vorbeugst, dass es nicht einfach so geschlossen werden kann (Achtung: Du kannst es dann bei Fehlverhalten auch nicht mehr schließen, außer durch einen Neustart des Systems), dann kannst Du folgenden Ansatz wählen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| interface uses
function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall;
implementation
{$R *.DFM}
function RegisterServiceProcess (dwProcessID, dwType: DWord): DWord; external 'KERNEL32.DLL';'RegisterServiceProcess'; |
Die Anwendung verstecken:
Delphi-Quelltext
1: 2: 3: 4:
| procedure VersteckeAnwendung; begin RegisterServiceProcess(0,1); end; |
Die Anwendung wieder einblenden:
Delphi-Quelltext
1: 2: 3: 4:
| procedure ZeigeAnwendung; begin RegisterServiceProcess(0,0); end; |
Karsten.