Programm über Parameter steuern

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.

Programm über Parameter steuern

Beitragvon DL3AD » 29. Okt 2017, 16:36 Programm über Parameter steuern

Hallo,
folgende Problematik.
Eine GUI-Anwendung schicke ich mit Form1.Hide in den Hintergrund und dort macht sie ihern Job.
Nun suche ich nach einer Möglickeit - z.B. über einen Parameter
projekt1 -S (auf der Konsole)
im Programm ein Form.Show zu erzeugen.

Wie kann man soetwas realisieren ?

Gruß Frank
DL3AD
 
Beiträge: 300
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.6.4 FPC 3.0.2) und Debian 8 (L 1.6.4 FPC 3.0.2) | 
CPU-Target: 32Bit
Nach oben

Beitragvon m.fuchs » 29. Okt 2017, 16:52 Re: Programm über Parameter steuern

Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
  if ParamStr(1) = '-s' then Self.Show;
end;     
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1676
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.6, FPC 3.0) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon Mathias » 29. Okt 2017, 17:21 Re: Programm über Parameter steuern

Somit werden dir alle Parameter aufgelistet.
Code: Alles auswählen
var
  i: integer;
begin
  for i := 1 to ParamCount do begin
    WriteLn(ParamStr(i));
  end;
end.

So nebenbei, gibt die ParamStr(0), der Name deines Programmes aus.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3195
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon m.fuchs » 29. Okt 2017, 17:31 Re: Programm über Parameter steuern

Nein, ihm werden nicht alle Parameter aufgelistet, denn offensichtlich bearbeitet er ein GUI-Programm. Und da hilft WriteLn nicht viel.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1676
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.6, FPC 3.0) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon diogenes » 29. Okt 2017, 17:37 Re: Programm über Parameter steuern

Daran liegt ein Problem. Da die Instanz schon läuft, kann man ihr nicht per Aufruf Parameter übergeben -- der Aufruf ist Vergangenheit, denn die Instanz läuft schon.

Ich rate, die Instanz regelmäßig auf die Existenz einer Datei zu prüfen, im Falle der Existenz diese zu löschen und sich mit Show wieder sichtbar zu machen. Wie man die Datei erzeugt? Nun, man ruft eine zweite Instanz der Anwendung mit dem besagten Parameter auf. Die tut nix, als die Datei zu erzeugen und sich selbst zu beenden. Daraufhin sieht die erste Instanz die Datei und macht sich sichtbar ...
Ceterum censeo computatores per Pascal docendos esse.
diogenes
 
Beiträge: 160
Registriert: 11. Jul 2010, 17:39
Wohnort: Wien
OS, Lazarus, FPC: Linux (L 0.9.xx FPC 2.2.z) | 
CPU-Target: 32Bit
Nach oben

Beitragvon m.fuchs » 29. Okt 2017, 17:53 Re: Programm über Parameter steuern

Moment, jetzt werden hier zwei verschiedene Dinge aus dem Posting gelesen.

@DL3AD: Was möchtest du machen?

  1. Das Programm startet normalerweise ohne das Form anzuzeigen. In Ausnahmefällen möchtest du es starten und das Form soll erscheinen. Dies willst du per Startparameter lösen.

    oder

  2. Das Programm läuft und du willst dem laufenden Programm die Anweisung geben das Form anzuzeigen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1676
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.6, FPC 3.0) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon Mathias » 29. Okt 2017, 18:03 Re: Programm über Parameter steuern

Nein, ihm werden nicht alle Parameter aufgelistet, denn offensichtlich bearbeitet er ein GUI-Programm. Und da hilft WriteLn nicht viel.

Ich dachte, das Ganze bezieht sich auf folgenden Thread: viewtopic.php?f=55&t=11165
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3195
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon DL3AD » 29. Okt 2017, 18:22 Re: Programm über Parameter steuern

Hallo,

nein ich beziehe mich nicht auf den anderen Thread.

Ich starte eine GUI Anwendung in der mittels Form.Hide das Form unsichtbar gemacht wird.
Nun möchte ich durch irgendeine Interaktion dem laufendem Programm mitteilen das es Form.Show machen soll.
Ob dass nun Parameter, Befehl oder Anweisung heißt ist egal.
Ich sitze vor dem Rechner und mache etwas und das Form ist zu sehen (unter Win und Linux)

Wie machen ? :mrgreen:
DL3AD
 
Beiträge: 300
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.6.4 FPC 3.0.2) und Debian 8 (L 1.6.4 FPC 3.0.2) | 
CPU-Target: 32Bit
Nach oben

Beitragvon m.fuchs » 29. Okt 2017, 18:57 Re: Programm über Parameter steuern

Ok, das ist dann nicht über ParamStr lösbar.

Möglichkeiten gibt es da einige:
  • Regelmäßig auf eine Datei prüfen wie diogenes schon vorschlug.
  • Über irgendein Protokoll (DDE, HTTP, ...) eine Botschaft an das Programm senden.
  • Ein Trayicon verwenden um auf das Programm zuzugreifen.
  • ...

Kommt ein bisschen auf das Anwendungsszenario an.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1676
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.6, FPC 3.0) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon diogenes » 29. Okt 2017, 19:07 Re: Programm über Parameter steuern

Ein Protokoll ist sicher die eleganteste Lösung, macht aber die Anwendung davon abhängig, ob das BS das Protokoll kennt. Bey TrayIcon muss die Oberfläche das können. Können die meisten. "Meine" Methode ist am generischsten, wenn ich so sagen darf. Damit könnte man auch reine Konsolenanwendungen im Hintergrund steuern.
Ceterum censeo computatores per Pascal docendos esse.
diogenes
 
Beiträge: 160
Registriert: 11. Jul 2010, 17:39
Wohnort: Wien
OS, Lazarus, FPC: Linux (L 0.9.xx FPC 2.2.z) | 
CPU-Target: 32Bit
Nach oben

Beitragvon Mathias » 29. Okt 2017, 19:34 Re: Programm über Parameter steuern

Vielleicht hilft die Komponente UniqueInstance weiter.

http://wiki.freepascal.org/UniqueInstance/de#Verlauf
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3195
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon diogenes » 29. Okt 2017, 19:38 Re: Programm über Parameter steuern

Für mich sogar interessant, aber kann man damit auch eine Urinstanz steuern? Das ist es ja, was unser DL3EAD gefragt hat, oder?
Ceterum censeo computatores per Pascal docendos esse.
diogenes
 
Beiträge: 160
Registriert: 11. Jul 2010, 17:39
Wohnort: Wien
OS, Lazarus, FPC: Linux (L 0.9.xx FPC 2.2.z) | 
CPU-Target: 32Bit
Nach oben

Beitragvon Mathias » 29. Okt 2017, 20:06 Re: Programm über Parameter steuern

aber kann man damit auch eine Urinstanz steuern?

Im Wiki steht dies: SendParameters (default = false): Sendet vor dem Beenden die ggf. übergebenen Parameter an die bereits laufende Instanz.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3195
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon diogenes » 29. Okt 2017, 20:31 Re: Programm über Parameter steuern

Na, dann ist's OK :)
Ceterum censeo computatores per Pascal docendos esse.
diogenes
 
Beiträge: 160
Registriert: 11. Jul 2010, 17:39
Wohnort: Wien
OS, Lazarus, FPC: Linux (L 0.9.xx FPC 2.2.z) | 
CPU-Target: 32Bit
Nach oben

• Themenende •

Zurück zu Sonstiges



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried