Seite 1 von 1
RunProgram() Parameter mit Anführungszeichen an mpv
Verfasst: 18.07.2025 22:37
von jogo
es geht um den Start einer Filmwiedergabe oder Stream mit mpv über RunProgram()
Ich schaffe es nicht den Fenstertitel, wenn er Leerzeichen enthält, komplett darzustellen.
Im Terminal funktioniert es, wie erwartet:
Code: Alles auswählen
mpv --title="Mein Fenstertitel" "Pfad/zur/Videodatei/oder/Stream"
oder auch mit Hochkommas:
Code: Alles auswählen
mpv --title='Mein Fenstertitel' 'Pfad/zur/Videodatei/oder/Stream'
Das gleiche jetzt mit RunProgram() mit maskierten Anführungszeichen wird alles korrekt gestartet, nur im mpv-Fenstertitel steht nur "Mein":
Code: Alles auswählen
Debug "--title=" + ~"\"" + "Mein Fenstertitel" + ~"\"" + " " + ~"\""+ "Pfad/zur/Videodatei/oder/Stream"+ ~"\""
RunProgram("mpv", "--title=" + ~"\"" + "Mein Fenstertitel" + ~"\"" + " " + ~"\""+ "Pfad/zur/Videodatei/oder/Stream"+ ~"\"", "")
Debugausgabe ist auch ok: --title="Mein Fenstertitel" "Pfad/zur/Videodatei/oder/Stream"
oder auch mit Hochkommas wird alles ausgeführt, nur der Fenstertitel wird nur bis zum ersten Leerzeichen angezeigt:
Code: Alles auswählen
RunProgram("mpv", "--title='Mein Fenstertitel' " + ~"\""+ "Pfad/zur/Videodatei/oder/Stream"+ ~"\"", "")
Klar, ich könnte auch einfach Fenstertitel ohne Leerzeichen übergeben, irgendwie hat mich jedoch die Neugier gepackt, warum das nicht geht

Vermutlich liegt das auch nicht an PureBasic - könnte auch an mpv liegen, vllt. kennt jemand eine Lösung?
Re: RunProgram() Parameter mit Anführungszeichen an mpv
Verfasst: 19.07.2025 05:27
von Bisonte
Code: Alles auswählen
RunProgram("mpv", "--title=" + #DQUOTE$ + "Mein Fenstertitel" + #DQUOTE$ + " " + #DQUOTE$ + "Pfad/zur/Videodatei/oder/Stream" + #DQUOTE$, "")
Wie sieht es mal ganz oldschool aus... (nicht diese "Escaperei"

)
Re: RunProgram() Parameter mit Anführungszeichen an mpv
Verfasst: 19.07.2025 16:03
von jogo
Danke für den Tip, hab ich gleich mal probiert - erzeugt das gleiche Ergebnis, wie die anderen Varianten.
Bei allen Varianten ist mir aufgefallen, dass die gequoteten/maskierten Anführungszeichen komischerweise im Fenstertitel dargestellt werden.
Wenn ein Leerzeichen im Titel enthalten ist, wird nur das erste Anführungszeichen dargestellt, bei einen durchgehenden String, werden beide Anführungszeichen dargestellt - sollte ja eigentlich nicht so sein.
Das beweist, dass RunProgramm() den Parameterstring mit Anführungszeichen an mpv übergibt, aber mpv das irgendwie falsch verarbeitet.
Warum das direkt über das Terminal richtig läuft, passt allerdings nicht zu dieser Logik. Letztendlich macht das Terminal ja auch nix anderes, als die Funktion RunProgram().
Schwer zu sagen, aus welcher Ecke das Problem nun wirklich kommt. Ich werde jetzt erstmal den Titelstring vorher auf Leerzeichen überprüfen und diese durch Unterstrich ersetzen.
Re: RunProgram() Parameter mit Anführungszeichen an mpv
Verfasst: 19.07.2025 17:32
von matbal
Ich vermute, die Kommandozeile wird nicht direkt übergeben. Wenn die Anführungszeichen nicht am Anfang und Ende des Parameters sind, werden sie falsch interpretiert. Das ist beim Parameter --title. Eine Kombination von doppelten und einfachen Anführungszeichen hat den kompletten Titel übergeben. Allerdings sind die einfachen Anführungszeichen im Fenstertitel zu sehen.
Kommandozeile:
Code: Alles auswählen
"--title='Mein Fenstertitel'" "Pfad/zur/Videodatei/oder/Stream"
PB-Code:
Code: Alles auswählen
Film$ = "/media/matthias/2T/vhs/Geschnitten/Abi Abschluss/01 Intro.mpg"
App$ = "mpv"
#DQ = #DQUOTE$
cmdline$ = #DQ + "--title='Mein Fenstertitel'" + #DQ + " " + #DQ + Film$ + #DQ
Debug cmdline$
RunProgram(App$, cmdline$, "")
Re: RunProgram() Parameter mit Anführungszeichen an mpv
Verfasst: 19.07.2025 17:55
von Axolotl
Anstelle von "_" geht vielleicht auch Chr(160)?
Unter Windows ist das meistens auch ein Leerzeichen, allerdings wird es anders behandelt als Chr(32).
Über die Tastatur kann man u.W. das Zeichen auch durch ALT+0160 (Zahlen auf dem NUMPAD) eingeben.
Re: RunProgram() Parameter mit Anführungszeichen an mpv
Verfasst: 19.07.2025 19:12
von jogo
@matbal: dein Ansatz führte zur Lösung. Die zusätzlichen Anführungszeichen am Anfang & Ende jeden Parameters waren ausschlaggebend
Habe dann einfach mal die Hochkommas rausgenommen - es funktionierte trotzdem, der Titel wird makellos angezeigt
Code: Alles auswählen
Film$ = "/media/matthias/2T/vhs/Geschnitten/Abi Abschluss/01 Intro.mpg"
App$ = "mpv"
#DQ = #DQUOTE$
cmdline$ = #DQ + "--title=Mein Fenstertitel" + #DQ + " " + #DQ + Film$ + #DQ ; <-- hab hier nur die Hochkommas entfernt - funktioniert trotzdem
Debug cmdline$
RunProgram(App$, cmdline$, "")
@Axolotl: Chr(160) funktioniert - auch in Linux - verrückt, sieht aus wie ein Leerzeichen, ist aber keins.
Das ist ein wirklich praktischer Trick, wenn irgendwo Leerzeichen Probleme machen.
Danke für die Hilfe & Tips