Seite 1 von 2
runprogram() mit gewählter app
Verfasst: 08.01.2021 18:53
von kartmanne
HI,
ich möchte aus meiner Anwendung heraus einen Mediaplayer meiner Wahl starten und damit ein media-file (Sound oder Film) abspielen.
Mittels
Code: Alles auswählen
mediaplayer$ =OpenFileRequester("Mediaplayer wählen",b$,"*.*",0)
wähle ich die app aus dem Ordner programme aus. (z.B. QT oder VLC)
Und dann möchte ich diese ausgewählten app starten. Dazu nutze ich
Code: Alles auswählen
RunProgram(#DQUOTE$+mediaplayer$+#DQUOTE$,
#DQUOTE$+songs(index)\link.s+#DQUOTE$,
ordner_path$+songs$)
songs(index)\link.s beinhaltet die existierende Mediadatei z.B. "film.mp4", die in ordner_path$+songs$ liegt.
mediaplayer$ = "/Applications/QuickTime Player.app" - und die app existiert auch dort.
oder
mediaplayer$ = "/Applications/VLC.app" - und die app existiert auch dort.
Wenn ich den 1. Parameter in runprogram() durch "open" ersetzte startet quicktime (Standardplayer) und spielt den film ab.
Setzte ich aber mediaplayer$ ein (mit oder ohne #DQUOTE$ startet nix.
Wie kann ich meine Wunsch-mediaplayer-app richtig definieren?
Re: runprogram() mit gewählter app
Verfasst: 08.01.2021 19:38
von mk-soft
Unter macOS ist eine APP ein Ordner. Du must den gesamten Path bei RunProgram zur Anwendung angeben
Siehe Finder -> Rechte Maus auf APP -> Paketinhalt zeigen
"/Applications/VLC.app/Contents/MacOS/VLC"
Re: runprogram() mit gewählter app
Verfasst: 08.01.2021 20:19
von kartmanne
HI,
ahso. Mit openfilerequester() kann ich nicht "in einen app-Ordner" einsteigen. Oder doch?
Ich würde also den gewählten app-Ordner nach einer ausführbaren Datei durchsuchen. Wenn's da mehrere gibt... hmmm...
Re: runprogram() mit gewählter app
Verfasst: 08.01.2021 21:37
von kartmanne
HI,
habe mir ein paar "app-Pakete" angesehen.
Ist es Konvention, dass ein app Ordner den Namen der app hat und die app dann in dem app-Paket immer in /Contents/MacOS/ liegt?
Also im Paket "XYZ.app" liegt die ausführbare datei immer hier: /Contents/MacOS/XYZ.app
Korrekt?
Re: runprogram() mit gewählter app
Verfasst: 08.01.2021 21:47
von mk-soft
Ja, "../MyApp.app/Contents/MacOS/MyApp"
Auch zugehörige Dateien (Nur lesend) gehören in diesen Ordner. "MyApp.app/Contents/Resources"
Siehe
PB IDE Tool MyAppData
Re: runprogram() mit gewählter app
Verfasst: 09.01.2021 08:54
von kartmanne
HI,
klasse. Vielen Dank.
Re: runprogram() mit gewählter app
Verfasst: 09.01.2021 11:10
von kartmanne
HI,
mit VLC geht's, VLC startet ud spielt den song(mp3) ab:
Code: Alles auswählen
mediaplayer$ =OpenFileRequester("Mediaplayer wählen",b$,"*.*",0)
Code: Alles auswählen
a$=mediaplayer$+"/Contents/MacOS/"+RemoveString(GetFilePart(mediaplayer$),".app",#PB_String_NoCase)
Code: Alles auswählen
RunProgram(a$,
#DQUOTE$+songs(index)\link.s+#DQUOTE$,
ordner_path$+songs$)
Mit Quicktime geht's nicht.
Quicktime startet, wenn ich das so mache:
Code: Alles auswählen
RunProgram(#DQUOTE$+a$+#DQUOTE$,
#DQUOTE$+songs(index)\link.s+#DQUOTE$,
ordner_path$+songs$)
Dann allerdings meldet MacOSX, dass ich keine Zugriffsrechte hätte.
Mit
Code: Alles auswählen
RunProgram("open",
#DQUOTE$+songs(index)\link.s+#DQUOTE$,
ordner_path$+songs$)
allerdings startet Quicktime und spielt den song ab.
Wenn im app-path keine Leerzeichen sind, dann darf ich auch nicht die #DQUOTE$ verwenden. So bei VLC. VLC startet nicht, wenn ich
verwende.
Ich möchte nun ungern für QT oder Leerzeichen eine Sonderlocke einbauen. Es möge ja für alle apps funktionieren.
Wie könnte das gehen?
Re: runprogram() mit gewählter app
Verfasst: 09.01.2021 13:47
von mk-soft
Programm ohne dquotes und Media File mit dquotes
Code: Alles auswählen
Debug "Player"
prog.s = OpenFileRequester("Prog", "", "", 0)
Debug "Media"
media.s = OpenFileRequester("Media", "", "", 0)
media.s = #DQUOTE$ + media + #DQUOTE$
run_prog.s = prog + "/Contents/MacOS/" + GetFilePart(prog, #PB_FileSystem_NoExtension)
Debug "Player " + run_prog
Debug "Media " + media
r1 = RunProgram(run_prog, media, "")
Debug r1
CallDebugger
Re: runprogram() mit gewählter app
Verfasst: 09.01.2021 15:48
von kartmanne
HI,
ja, danke, schön klar dargestellt - so wie ich's schon verstanden hatte
Aber... wenn ich mit
Quicktime ("Quicktime Player.app", beinhaltet chr(34), deshalb hatte ich #dquotes probiert) auswähle, dann wird zwar QT geöffnet, meldet aber, dass die media.s nicht göffnet werden kann, da mir die Zugriffsrechte fehlen. Dafür hätt ich ne Lösung gesucht.
Aber, ich kann den Fall auch einfach "ignorieren" und dem Nutzer meiner App empfehlen, nur einen anderen mediaplayer zu wählen, wenn's nicht QT ( üblich Standard bei MacOS) sein soll. Per "open" spielt QT (als Standardplayer) das media.s ja ab.
Re: runprogram() mit gewählter app
Verfasst: 09.01.2021 16:59
von mk-soft
Der prog String kann keine dquotes enthalten, sonst ist bei dir etwas am OS nicht in Ordnung.
Der QT ist bei mir auch nicht mehr der Standard Player (Big Sur)
Wenn du auf die Media Datei keine zugriff hast, sind die Ordner Berechtigungen nicht richtig.
Zeige mal deinen Lauffähigen Code ...
P.S. Ich Denker eher das kein Zugriff fehler ist, sondern das der QT das Format nicht abspielen kann (QT ist zu alt)