Mitkriegen wenn VLC-Player beendet wird

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
elcomportal
Beiträge: 13
Registriert: Fr 11. Mai 2012, 21:06
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Mitkriegen wenn VLC-Player beendet wird

Beitrag von elcomportal »

Hallo,
ich habe jetzt mein erstes Lazarus-Programm fast fertig. :D
Der PC bekommt über die Com1 einen Befehl vom µC und startet dann den VLC-Player mit der entsprechenden Datei. Wenn der VLC-Player das Video fertig abgespielt hat schließt er sich. Wie kann mein Lazarus-Programm mitkriegen, wenn der VLC-Player fertig ist? Ich muß dem µC dann über Com1 weinen Befehl senden.

Es läuft auf Win XP, evtl. auch auf Win7. Der VLC-Player wird im Vollbildmodus gestartet.

Mfg
Torsten Müller
www.singleboerse-tipp.de - kostenloser Vergleich von Singlebörsen und Partnerbörsen

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Mitkriegen wenn VLC-Player beendet wird

Beitrag von Maik81ftl »

Das einzige, was mir dazu einfällt ich die Speicherüberwachung des von VLC. 'ne andere Option fällt mir zugegeben nicht ein. Nur wie des laufen soll bin selbst ich grad etwas doof...
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

elcomportal
Beiträge: 13
Registriert: Fr 11. Mai 2012, 21:06
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Mitkriegen wenn VLC-Player beendet wird

Beitrag von elcomportal »

Hmm, ich starte den VLC-Player auf folgende Weise:

Code: Alles auswählen

AProcess := TProcess.Create(nil);
   AProcess.CommandLine := 'C:\Programme\VideoLAN\VLC/vlc.exe ' + video1 + ' -f';
   AProcess.Execute;
   AProcess.Free;


Vielleicht kann man da irgendwie ein Handle rauskriegen und abfragen? Aber wie?
Zuletzt geändert von Lori am Mo 4. Jun 2012, 19:26, insgesamt 1-mal geändert.
Grund: Highlighter
www.singleboerse-tipp.de - kostenloser Vergleich von Singlebörsen und Partnerbörsen


Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Re: Mitkriegen wenn VLC-Player beendet wird

Beitrag von Bora4d »

Wieso gibts du TProcess frei damit kannst du doch mitbekommen ob der Process noch läuft.
Einfacher ist es mit ExecuteProcess die Funktion wartet bis das gestartete Programm beendet ist. HIer:
http://www.freepascal.org/docs-html/rtl/sysutils/executeprocess.html

Hier sind genug Informationen:
http://wiki.freepascal.org/Executing_External_Programs

Und ein gutes Beispiel für TProcess:
https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/examples/process/

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Mitkriegen wenn VLC-Player beendet wird

Beitrag von Maik81ftl »

Bora4d,

ich vermute mal, das er nicht unnötig einen Prozess laufen lassen will, was mich zugegeben nach deinem Post dahingehen die Stellen lässt, ob das Externe Programm, welches über einen Prozess gestartet wird nach dem Aufruf von

Code: Alles auswählen

AProcess.Free;
überhaupt noch weiter läuft oder beendet wird.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Re: Mitkriegen wenn VLC-Player beendet wird

Beitrag von schnullerbacke »

Maik81ftl hat geschrieben:Bora4d,

ich vermute mal, das er nicht unnötig einen Prozess laufen lassen will, was mich zugegeben nach deinem Post dahingehen die Stellen lässt, ob das Externe Programm, welches über einen Prozess gestartet wird nach dem Aufruf von

Code: Alles auswählen

AProcess.Free;
überhaupt noch weiter läuft oder beendet wird.


Code: Alles auswählen

AProcess.Free;


sorgt eigentlich nur dafür das AProcess frei gegeben wird. Beenden des Prozesses geht mit:

Code: Alles auswählen

AProcess.Terminate(0);


Wenn AProcess mit:

Code: Alles auswählen

AProcess:= TProcess.Create(Self);


innerhalb eines Objektes erzeugt wurde, wird es auch automatisch mit dem Objekt entfernt. Wird Terminate(0) nicht verwendet läuft der Prozess weiter, bis er mit fork oder ähnlich beendet wird.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Antworten