runprogram() mit gewählter app

MAC OSX spezifisches Forum
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

runprogram() mit gewählter app

Beitrag 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?
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: runprogram() mit gewählter app

Beitrag 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"
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

Re: runprogram() mit gewählter app

Beitrag 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...
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

Re: runprogram() mit gewählter app

Beitrag 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?
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: runprogram() mit gewählter app

Beitrag 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
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

Re: runprogram() mit gewählter app

Beitrag von kartmanne »

HI,

klasse. Vielen Dank.
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

Re: runprogram() mit gewählter app

Beitrag 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

Code: Alles auswählen

runprogram(#DQUOTE$+a$+#DQUOTE$,... 
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?
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: runprogram() mit gewählter app

Beitrag 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
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

Re: runprogram() mit gewählter app

Beitrag von kartmanne »

HI,

ja, danke, schön klar dargestellt - so wie ich's schon verstanden hatte ;-)

Aber... wenn ich mit

Code: Alles auswählen

prog.s = OpenFileRequester("Prog", "", "", 0)
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.
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: runprogram() mit gewählter app

Beitrag 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)
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten