externes Programm starten und Startendes Pogramm schließen

Für Fragen von Einsteigern und Programmieranfängern...

externes Programm starten und Startendes Pogramm schließen

Beitragvon DL3AD » 4. Jul 2017, 13:15 externes Programm starten und Startendes Pogramm schließen

Hallo,

ich möchte dass meine Anwendung ein anderes Programm startet und die Anwendung sich dann schießt.
Folgendes habe ich mal getestet - Funktioniert auch soweit.
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
  AProcess: TProcess;
begin
  AProcess := TProcess.Create(nil);
  AProcess.CommandLine := 'Prog1';
  AProcess.Execute;
  AProcess.Options := AProcess.Options + [poWaitOnExit];
  AProcess.Free;
  Form1.Close;
end;                 

Ist dass so der übliche Weg oder gibt es eine bessere Variante (Plattformübergreifend) ?
Bei AProcess.CommandLine sagt er mir das sei veraltet - gibt es da was aktuelleres ?

Gruß
Frank
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon Socke » 4. Jul 2017, 13:25 Re: externes Programm starten und Startendes Pogramm schließ

DL3AD hat geschrieben:Ist dass so der übliche Weg oder gibt es eine bessere Variante (Plattformübergreifend) ?
Bei AProcess.CommandLine sagt er mir das sei veraltet - gibt es da was aktuelleres ?

TProcess ist plattformübergreifend; damit solltest du also keine Probleme haben. Es verwendet aber die Systemcodepage, was zu Schwierigkeiten bei der Übertragung von Texten führen kann.

Anstatt CommandLine solltest du die Eigenschaften Executable und Parameters befüllen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2497
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon DL3AD » 4. Jul 2017, 16:33 Re: externes Programm starten und Startendes Pogramm schließ

... Danke
Wie kann man den Fall abfangen wenn das aufzurufende Programm nicht existiert (Plattformübergreifend) ?

Gruß Frank
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon Socke » 4. Jul 2017, 19:27 Re: externes Programm starten und Startendes Pogramm schließ

DL3AD hat geschrieben:Wie kann man den Fall abfangen wenn das aufzurufende Programm nicht existiert (Plattformübergreifend) ?

Es wird eine Exception geworfen; Laut der Dokumentation zu Execute ist das EProcess.
Code: Alles auswählen
try
  AProcess.Execute;
except
  on e: EProcess do ShowMessage('Fehler beim Programmstart: '+e.Message);
end;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2497
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon gladio » 5. Jul 2017, 08:27 Re: externes Programm starten und Startendes Pogramm schließ

Könnte es auch hilfreich sein, vorher zu prüfen ob die zu öffende Datei vorhanden ist:

Code: Alles auswählen
 
...
If FileExists(Dateiname) then
begin
  ....
end
else
  showMessage(Dateiname + ' nicht vorhanden');
end;
 
gladio
 
Beiträge: 95
Registriert: 21. Jun 2014, 05:15
Wohnort: Insel Rügen
OS, Lazarus, FPC: Win7/10-32/64 - Laz 1.8 Standard-Edition | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon Socke » 5. Jul 2017, 08:35 Re: externes Programm starten und Startendes Pogramm schließ

gladio hat geschrieben:Könnte es auch hilfreich sein, vorher zu prüfen ob die zu öffende Datei vorhanden ist

Das ist mit Sicherheit hilfreich, ersetzt aber die Exception-Behandlung nicht.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2497
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon DL3AD » 5. Jul 2017, 11:45 Re: externes Programm starten und Startendes Pogramm schließ

... die Idee mit FileExists hatte ich auch schon - aber unter Win heist die Datei z.B. Prog1.exe - aber unter Linux nur Prog1.
Auf jeden Fall werde ich mal die Exception abfangen.
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon gladio » 5. Jul 2017, 13:41 Re: externes Programm starten und Startendes Pogramm schließ

Ich will dir ja nichts aufschwatzen...
aber wenn der Name des Programms feststeht, so oder so nur sein kann:
Code: Alles auswählen
If (FileExists(Prog1.exe)) or (FileExists(Prog1)) then ...
gladio
 
Beiträge: 95
Registriert: 21. Jun 2014, 05:15
Wohnort: Insel Rügen
OS, Lazarus, FPC: Win7/10-32/64 - Laz 1.8 Standard-Edition | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon DL3AD » 5. Jul 2017, 17:39 Re: externes Programm starten und Startendes Pogramm schließ

... klar - so kann man es auch machen Danke

Wo kann ich eigentlich einstellen das die gestellte Frage beantwortet/ Problem gelößt wurde ?
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon Marsmännchen » 5. Jul 2017, 19:22 Re: externes Programm starten und Startendes Pogramm schließ

DL3AD hat geschrieben:... klar - so kann man es auch machen Danke

Wo kann ich eigentlich einstellen das die gestellte Frage beantwortet/ Problem gelößt wurde ?


Ruf deinen ersten Beitrag auf und schreibe sowas wie [gelöst] in den Titel.
Ich mag Pascal...
Marsmännchen
 
Beiträge: 293
Registriert: 4. Mai 2014, 20:32
Wohnort: Berlin
OS, Lazarus, FPC: Ubuntu 16.04, FPC 3.0.2, Lazarus 1.6.4 | 
CPU-Target: 64bit
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 3 Gäste

porpoises-institution
accuracy-worried