Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mit Shellexecute eine Anwendung im Hintergrund starten (https://www.delphipraxis.net/66509-mit-shellexecute-eine-anwendung-im-hintergrund-starten.html)

Moony 30. Mär 2006 16:05


Mit Shellexecute eine Anwendung im Hintergrund starten
 
Hallo,

ich weiß, das Thema gabs schon öfter, aber die dazu geschriebenen Tipps haben mir nicht weiter geholfen.

Ich starte aus meiner Anwendung heraus eine andere Delphi-Anwendung mit dem folgenden Aufruf:

Delphi-Quellcode:
ShellExecute(0, PChar('open'), PChar('Programm.Exe'), PChar('Parameter'), PChar(ExtractFilePath(Application.ExeName)), SW_HIDE);
Die Applikation wird auch richtig gestartet. Innerhalb der Applikation habe ich die Hauptform auf invisible. Doch leider ist das alles nicht so wie es sein soll: Die Form wird dennoch gezeigt und ich möchte, dass die gestartete Applikation aus der Titelleiste entfernt wird, so dass nicht sichtbar ist dass eine andere Applikation am Werk ist.

Dass die Form nicht mehr gezeigt wird, habe ich mit tricksen hinbekommen:

Delphi-Quellcode:
Form.AlphaBlend := true;
Form.AlphaBlendValue := 0;
Aber dennoch ist die Applikation in der Titelleiste vertreten. Ich hoffe mir kann jemand weiterhelfen.

Gruß, Moony

Olli 10. Sep 2006 12:16

Re: Mit Shellexecute eine Anwendung im Hintergrund starten
 
Es gäbe da eine Methode die mir ad-hoc einfällt:

Du startest ja die andere Anwendung ohnehin selber, starte sie suspended und hooke CreateWindow (und Co.) so daß du hier schon eingreifen kannst und bspw. die Flags so verändern kannst, daß das Hauptfenster nicht in der Taskleiste erscheint.

Handelt es sich bei der gestarteten Anwendung um eine Delphianwendung, solltest du beachten, daß das Hauptformular nicht das gleiche ist, wie das Application-Objekt welches normalerweise für das Symbol in der Taskleiste verantwortlich zeichnet.

Christian Seehase 10. Sep 2006 13:03

Re: Mit Shellexecute eine Anwendung im Hintergrund starten
 
Moin Moony,

aus Deinen Worten entnehme ich, dass Du die zu startende Anwendung auch geschrieben hast.
Wenn Du dort Application.ShowMainform := false setzt, sollte das Programm nicht mehr angezeigt werden.
Den Aufruf musst Du in der Projektdatei unterbringen, am Besten vor dem ersten Application.CreateForm.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz