[gelöst] Programmaufruf mit TProcess
-
- Beiträge: 104
- Registriert: Mi 2. Jun 2010, 17:56
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
[gelöst] Programmaufruf mit TProcess
Hallo an Alle!
Ich muss aus einer laufenden Anwendung ein anderes Programm starten.
Wenn das funktioniert hat, dann soll die laufende Anwendung (das rufende Programm)
beendet werden.
Ich habe dazu mal ein kleines Testprogramm geschrieben (TProcess1.exe) und mich bei dem zu
rufenden Programm für den Rechner (Calc.exe) von Windows entschieden. Mein Programm
besteht aus einer Form mit zwei Buttons drauf. Button1 soll die Calc.exe von Windows starten
und dann sich selbst (TProcess.exe) beenden. Der Button2 beendet die Anwendung normal.
Das funktioniert auch, der Windows-Rechner wird aufgerufen und man kann ihn sogar benutzen,
aber die aktive Anwendung (das rufende Programm) wird nicht beendet. Man kann sie
sogar mehrmals aufrufen, und sie ist dann auch mehrmals im Task-Manager zu sehen.
Hat jemand eine Idee ?
Mit freundlichen Grüßen, Hercules.
Ich muss aus einer laufenden Anwendung ein anderes Programm starten.
Wenn das funktioniert hat, dann soll die laufende Anwendung (das rufende Programm)
beendet werden.
Ich habe dazu mal ein kleines Testprogramm geschrieben (TProcess1.exe) und mich bei dem zu
rufenden Programm für den Rechner (Calc.exe) von Windows entschieden. Mein Programm
besteht aus einer Form mit zwei Buttons drauf. Button1 soll die Calc.exe von Windows starten
und dann sich selbst (TProcess.exe) beenden. Der Button2 beendet die Anwendung normal.
Das funktioniert auch, der Windows-Rechner wird aufgerufen und man kann ihn sogar benutzen,
aber die aktive Anwendung (das rufende Programm) wird nicht beendet. Man kann sie
sogar mehrmals aufrufen, und sie ist dann auch mehrmals im Task-Manager zu sehen.
Hat jemand eine Idee ?
Mit freundlichen Grüßen, Hercules.
- Dateianhänge
-
- TProcess.bmp (1.35 MiB) 1782 mal betrachtet
Zuletzt geändert von Hercules am Do 9. Apr 2015, 17:50, insgesamt 1-mal geändert.
-
- Beiträge: 152
- Registriert: Mo 3. Feb 2014, 14:07
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Programmaufruf mit TProcess
In der procedure ProgrammNeuStarten fehlt ganz einfach als letzte Zeile ein um das Programm zu schließen.
Von würde ich persönlich abraten.
Code: Alles auswählen
Close;
Von
Code: Alles auswählen
Halt;
.
Re: Programmaufruf mit TProcess
poWaitonExit !!
-
- Beiträge: 104
- Registriert: Mi 2. Jun 2010, 17:56
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Programmaufruf mit TProcess
Hallo baumina,
hallo Hde.
Vielen Dank für Eure schnelle Reaktion.
Ich habe poWaitOnExit schon im Programm,
jetzt habe ich danach noch einen Close eingefügt.
Meine aktuelle Anwendung will sich einfach nicht beenden.....
hallo Hde.
Vielen Dank für Eure schnelle Reaktion.
Ich habe poWaitOnExit schon im Programm,
jetzt habe ich danach noch einen Close eingefügt.
Meine aktuelle Anwendung will sich einfach nicht beenden.....
Re: Programmaufruf mit TProcess
poWaitOnExit verhindert es ja auch
-
- Beiträge: 104
- Registriert: Mi 2. Jun 2010, 17:56
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Programmaufruf mit TProcess
Hallo baumina,
nochmal was zu deinem vorgeschlagenem Close.
Ich habe den nach dem Befehl AProcess.Free eingefügt.
Die Wirkung ist wie folgt:
Das Programm Calc.exe wird zwar aufgerufen, aber
meine Anwendung bleibt auch noch auf dem Bildschirm.
Wenn ich die Calc.exe dann schließe, erst dann wird auch meine
Anwendung geschlossen.
Hercules.
nochmal was zu deinem vorgeschlagenem Close.
Ich habe den nach dem Befehl AProcess.Free eingefügt.
Die Wirkung ist wie folgt:
Das Programm Calc.exe wird zwar aufgerufen, aber
meine Anwendung bleibt auch noch auf dem Bildschirm.
Wenn ich die Calc.exe dann schließe, erst dann wird auch meine
Anwendung geschlossen.
Hercules.
Re: Programmaufruf mit TProcess
Dein Programm folgt nicht deinen Absichten
sondern deinen Anweisungen
und die sagen genau das was du schilderst
sondern deinen Anweisungen
und die sagen genau das was du schilderst
-
- Beiträge: 104
- Registriert: Mi 2. Jun 2010, 17:56
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Programmaufruf mit TProcess
Hallo Hde,
hallo baumina,
vielen Dank an Euch beide.
Die Reihenfolge der einzelnen Befehle hatte ich mir
aus Lazarus herunter geladen dort stand:
// Während das externe Programm läuft, soll unser
// Programm natürlich nicht weiterlaufen.
// Dies regeln wir mit folgender Bedingung:
AProcess.Options := AProcess.Options + [poWaitOnExit];
Ich habe jetzt folgendes gemacht:
1. Ich habe den poWaitOnExit raus gemacht, Danke an Hde.
2. Nach dem letzten Befehl habe ich den Close eingefügt,Danke an baumina.
Hurra, so funktionierts!!!!!
Vielen Dank nochmal.
Mit freundlichen Grüßen, Hercules.
hallo baumina,
vielen Dank an Euch beide.
Die Reihenfolge der einzelnen Befehle hatte ich mir
aus Lazarus herunter geladen dort stand:
// Während das externe Programm läuft, soll unser
// Programm natürlich nicht weiterlaufen.
// Dies regeln wir mit folgender Bedingung:
AProcess.Options := AProcess.Options + [poWaitOnExit];
Ich habe jetzt folgendes gemacht:
1. Ich habe den poWaitOnExit raus gemacht, Danke an Hde.
2. Nach dem letzten Befehl habe ich den Close eingefügt,Danke an baumina.
Hurra, so funktionierts!!!!!
Vielen Dank nochmal.
Mit freundlichen Grüßen, Hercules.
Re: [gelöst] Programmaufruf mit TProcess
Hercules hat geschrieben:// Während das externe Programm läuft, soll unser
// Programm natürlich nicht weiterlaufen.
eben, es läuft nicht weiter sondern wartet bis das aufgerufene Fremdprogramm beendet wird.
erst dann wird der nächste Befehl ausgeführt.