[gelöst] Dienst von TProcess beenden

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Benutzeravatar
juelin
Beiträge: 326
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

[gelöst] Dienst von TProcess beenden

Beitrag von juelin »

Hallo,
ich habe Lazarus 4.2 mit FPC 3.2.2 unter Windows 11.
Ich habe ein Lazarusprogramm (oldies.exe) geschrieben, das ein anderes Lazarusprogramm
(musicplayer.exe) mit TProcess startet.
Soweit klappt auch alles..
In dem Programm musicplayer.exe rufe ich das Programm mplayer.exe über die
Komponente MPlayerControl1 auf, das in einen eigenen Task startet.

Code: Alles auswählen

              MPlayerControl1.MPlayerPath:='C:\Program Files (x86)\MPlayer for Windows\mplayer.exe';
              MPlayerControl1.Filename:=h1;
              MPLayerControl1.Volume:=100;
              MPlayerControl1.Play;

Code: Alles auswählen

            AProcess:=TProcess.Create(nil);
            AProcess.Executable:='D:\Mediathek\Oldies\musicplayer\musicplayer.exe';
            AProcess.Parameters.Add(h1);
            AProcess.Options:=[poUsePipes];
            AProcess.Execute;
            runprog:=True;
            Timer1.Enabled:=True;
            
            
procedure TForm2.Timer1Timer(Sender: TObject);
begin
  if not AProcess.Running then
  begin
    AProcess.Free;
    Timer1.Enabled:=False;
    runprog:=False;
  end;
end;
Nun zu meinem Problemm:
Ich möchte, während ein Song abgespielt wird (im mplayer.exe) den Process musicplayer.exe
und die Task mplayer.exe stoppen.
Das mache ich mit AProcess.Terminate(0);
Der Process musicplayer.exe verschwindet auch aus dem Taskmanger.
Aber der Process mplayer.exe läuft weiter.
Wie kriege ich den Process mplayer.exe gestoppt?

Danke und Gruß
Jürgen
Zuletzt geändert von juelin am Sa 11. Okt 2025, 20:49, insgesamt 1-mal geändert.

Soner
Beiträge: 761
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Dienst von TProcess beenden

Beitrag von Soner »

Direkte Antwort auf deine Frage habe ich nicht, aber warum verwendest du mplayer nicht direkt.

Wenn du nur Musik Programm schreiben möchtest, dann schaue auf uos, es hat sehr gute Beispielie.

Stevie
Beiträge: 182
Registriert: Di 27. Feb 2024, 22:40

Re: Dienst von TProcess beenden

Beitrag von Stevie »

Hallo Jürgen,

hast Du es mal mit Google versucht? Gebe ich die Stichworte "freepascal tprocess kill subprocesses" in Google ein, bekomme ich auf den ersten zwei oder drei Treffern bereits sehr brauchbare Ergebnisse, wie z.B. das aus dem internationalen Forum, in dem jemand fast genau das gleiche fragt:
I have a Tprocess running fine and everything works.
The process runs a cmd.exe shell which in turn runs ffmpeg

I want to be able to force closure of the child shell (killing ffmpeg obviously) but cant seem
to see how to do that.
Das Problem scheint nicht ganz so einfach zu lösen zu sein, aber zumindest bietet https://forum.lazarus.freepascal.org/in ... ic=57870.0 gleich mehrere Varianten...

Antworten