anderes Programm aufrufen

Hallo liebe Leute,
ich möchte gerne aus meinem Programm Affinity Photo mit ein bestimmtes Bild aufrufen.
Ich möchte nicht den Launch Befehl nutzen. Habe die Idee mit AppleScript das Fotoprogramm aufzurufen.
Das klappt erst einmal ganz gut, aber wie kann ich den Quellpfad des Bildes an Applescript übergeben.

Wie immer, möchte ich mich bei Euch für jeden Rat bedanken.
Liebe Grüße Micha

Macht Affinity dann das Photo auf, wenn Du einen Pfad übergibst?

Bei AppleScript brauchst Du normalerweise Posix-Pfade. Das ist fast wie ein Shell-Pfad - soweit ich mich erinnere.

Wie machst Du denn Dein AppleScript? Dynamisch mit MBS oder ist das AppleScript fest in derIDE? Beim letzteren kannst Du den Pfad einfach als Variable übergeben. Beim MBS arbeite ich immer mit properties im AppleScript, damit es keine Probleme mit dem Encoding gibt.

Hallo Beatrix
Wenn ich ein Bild auf das Affinity-Icon per Drag & Drop ablege, dann öffnet das Programm automatisch mit dem Bild.
Leider fehlt mit jegliche Erfahrung mit Applescript, ich habe einfach ein kurzes Script mit dem Scripteditor gemacht:

tell application “Finder”
activate
open document file “IMG_2669.jpg” of folder “affinity” of folder “Desktop” of folder “michaeldinse” of folder “Users” of startup disk using application file “Affinity Photo.app” of folder “Applications” of startup disk
end tell

Danach habe ich fertige Script in Xojo importiert.
Natürlich öffnet sich immer nur das gleiche Bild.
Vielleicht könntest Du mir kurz zeigen wie ich dem Pfad übergeben kann?

on run (theFile) tell application "Finder" set theDocument to theFile as POSIX file open theDocument end tell end run

Aufzurufen z.B. mit “/Users/beatrixwillius/Desktop/test.png”. Soweit ich mich erinnere, sind beim Posix-Pfad die Leerzeichen nicht durch "\ " zu ersetzen. Siehe http://developer.xojo.com/applescripts für das Verwenden des Scripts.

Hallo Beatrix,
erst einmal Danke für die prompte Antwort.
Sorry, aber was ist on run handler?

Der “on run” Handler ist das hier:

on run(parameter) --Rest vom Script end on

Damit kann man Parameter an AppleScripts übergeben, wenn diese von Xojo aufgerufen werden. Das ist eine Möglichkeit, AppleScripts aufzurufen.

Speichere das Script ab und ziehe es als externe Datei nach Xojo z.B. als “MyScript”. Das kannst Du dann aufrufen mit:

dim f as folderitem 'weise dem folderitem die Datei zu, die Du öffnen willst MyScript(f.shellpath) 'hier wird das AppleScript aufgerufen

Wobei Du noch schauen mußt, wie ShellPath und PosixPath sich unterscheiden.

Vielen Dank für Deine Mühe.
Ich werde es gleich mal probieren!

Hallo Beatrix
ein kleines Problem habe ich leider immer noch:

meinFile ="/Volumes/Home/MultiMediaCloner2/2014-02-_____Alles/_DSC0950.jpg"
in XOJO starte ich mit: AffinityStart(meinFile)
funktionier leider nicht!
on run (MeinFile)
tell application “Finder”
activate
open POSIX file meinFile using application file “Affinity Photo.app” of folder “Applications” of startup disk
end tell
end run

Starte ich das Script selber, dann geht es
on run (MeinFile)
tell application “Finder”
activate
open POSIX file “/Volumes/Home/MultiMediaCloner2/2014-02-_____Alles/_DSC0950.jpg” using application file “Affinity Photo.app” of folder “Applications” of startup disk
end tell
end run

Was mach ich hier falsch?

Was passiert denn? Nichts? Gibt es eine Fehlermeldung?

Es passiert nix, auch keine Fehlermeldung.
Offensichtlich wird der Pfad nicht übergeben.

Ausnahme:
Wenn ich den Pfad direkt als string im Scriptcode eingebe, dann ja

Ich bin erst am Nachmittag wieder am Mac. Verwendest Du das MBS-Plugin?

Ja, aber damit komme ich nicht zurecht.

Grins… das ist ein wenig komplizierter. Ich habe einen Wrapper genannt RunAS verfügbar unter http://www.mothsoftware.com/content/xojo/ . Ich werde am Nachmittag mal was basteln.

Ich mu mal eine neue Version vom runAS auf meine Webseite machen…

Hier ist ein kleines Beispiel: http://www.mothsoftware.com/downloads/runAS_openfile.zip .

Da fehlt jetzt noch das vollstndige Un-escapen der Shell-Pfade. Es ist kein Affinity drin. Wenn Du das hunderte von Malen aufrufst, bentigst Du noch NSAutoreleasePoolMBS. Ich wei auerdem nicht, mit welchen Encodings das funktioniert. Dafr nehme ich meistens Script-Properties. Damit kann man Daten direkt ins AppleScript stopfen.

Hallo Beatrix,
Du bist der Hammer!!!
Es hat astrein geklappt!

Vielen, vielen Dank!!!
Liebe Grüße aus Berlin
Micha D.