Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi kein Fenster öffnen bei Programmaufruf mit Parameter! (https://www.delphipraxis.net/135923-kein-fenster-oeffnen-bei-programmaufruf-mit-parameter.html)

Hedge 20. Jun 2009 04:49


kein Fenster öffnen bei Programmaufruf mit Parameter!
 
Wenn mein Programm mit einem Parameter gestartet wird, soll dies nur ein anderes Programm aufrufen und sich selbst gleich wieder beenden.
Im Moment überprüf ich das alles im OnCreate-Ereignis des Forms.
Man sieht leider kurz das Fenster aufblitzen.
Das geht doch sicher irgendwie eleganter oder?

RWarnecke 20. Jun 2009 05:29

Re: kein Fenster öffnen bei Programmaufruf mit Parameter!
 
Ja, du kannst das in der DPR Datei erledigen. Beispiel :
Delphi-Quellcode:
  if paramstr[1]='noWindow' then
    // Shellexecute - Befehl
  else
  begin
    Application.Initialize;
    Application.CreateForm(TMainForm, MainForm);
    Application.Run;
  end;
Ungetestet, sollte aber funktionieren.

Hedge 20. Jun 2009 10:17

Re: kein Fenster öffnen bei Programmaufruf mit Parameter!
 
paramStr musste in eckige runde Klammern gesetzt werden, aber sonst funktioniert es perfekt:

Delphi-Quellcode:
program Test;

uses
  Forms,shellapi,
  MainForm in 'MainForm.pas' {Form1};

{$R *.res}

begin
   //Parameter auswerten
   if paramstr(1)<>'' then
     ShellExecute(0,
                  'open',
                  PChar('http://www.bing.de'),
                  nil,
                  nil,
                   0)
  else
  begin

  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
 end;
end.

Uwe Raabe 20. Jun 2009 13:49

Re: kein Fenster öffnen bei Programmaufruf mit Parameter!
 
Es geht auch im FormCreate:

Delphi-Quellcode:
  if ParamCount > 0 then begin
    ShellExecute(0,
                 'open',
                 PChar('http://www.bing.de'),
                 nil,
                 nil,
                 0);
    Application.ShowMainForm := false;
    Application.Terminate;
  end;

SirThornberry 20. Jun 2009 14:10

Re: kein Fenster öffnen bei Programmaufruf mit Parameter!
 
wobei in diesem Fall das FormCreate der falsche Platz ist. Denn wozu sollte mein ein Form erstellen wenn es doch nicht gebraucht wird? Dann lieber vorher prüfen ob das Form gebraucht wird und entsprechend form erzeugen oder eben andere Aktion ausführen.

Uwe Raabe 20. Jun 2009 14:29

Re: kein Fenster öffnen bei Programmaufruf mit Parameter!
 
Zitat:

Zitat von SirThornberry
wobei in diesem Fall das FormCreate der falsche Platz ist. Denn wozu sollte mein ein Form erstellen wenn es doch nicht gebraucht wird? Dann lieber vorher prüfen ob das Form gebraucht wird und entsprechend form erzeugen oder eben andere Aktion ausführen.

Grundsätzlich richtig! Allerdings sind seit ein paar Delphi-Versionen manuelle Änderungen an der DPR-Datei gelegentlich mit merkwürdigen Effekten behaftet. Daß dabei fast immer die Formatierung flöten geht, ist da nur das kleinere Übel.

Ob das Form wirklich als Instanz gebraucht wird oder nicht, hängt sicher vom entsprechenden Einsatz ab. So könnte man ja auch bestimmte Eigenschaften des Forms verwenden ohne das Form darzustellen (z.B. die Web-Adresse, die anderfalls als Vorgabe in einem Edit-Feld stehen würde). Gefragt war lediglich das "Aufblitzen" des Forms zu verhindern. Dies ist somit nur einer von mehreren möglichen Lösungsansätzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16: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