Applescript Tell Application of Specific Instance

1

Se ho 2 istanze di un'applicazione in esecuzione, e voglio scegliere come target uno di loro dal loro PID per eseguire uno snippet di Applescript, come potrei farlo? Ho il PID dell'istanza che voglio targetizzare, ma se eseguo quanto segue, verrà eseguito su qualsiasi istanza che è stata avviata per ultima.

tell application "/Applications/Adobe After Effects CC 2018/Adobe After Effects CC 2018.app" to DoScript "alert()"

C'è un modo per impostare un'istanza come "Frontmost" in modo che diventi mirata, o ottenere un'applicazione dal PID e dirla specificatamente?

Grazie!

    
posta Justin Taylor 19.10.2018 - 18:26
fonte

1 risposta

1

Approccio al bridge di scripting

Con ScriptingBridge , crea un'istanza SBApplication con applicationWithProcessIdentifier: e quindi puoi chiamare i metodi di AppleScript con ponte sul processo di tua scelta.

Overview

Scripting Bridge is a technology that lets you control scriptable Apple and third-party applications using standard Objective-C syntax. Introduced in OS X version 10.5 (Leopard), the Scripting Bridge framework dynamically implements an Objective-C bridge to OSA-compliant applications—that is, applications having a scripting interface (usually defined in a sdef file). As part of this implementation, it generates Objective-C class implementations of the classes it finds in the scripting interface, including objects and methods representing properties, elements, commands, and so on. The objects are derived from classes defined in the Scripting Bridge framework.

Approccio AppleScript

Una discussione su MacScripter suggerisce questo approccio:

tell application "System Events"
    set myPID to unix id of process "TextEdit"
    -- ...for every matching process
    -- set myPIDs to the unix id of processes whose name is "TextEdit"

    set myProcess to first process whose unix id is myPID
    set the frontmost of myProcess to true
end tell

Vedi anche: Come attivare l'applicazione Mac OS X con un determinato ID di processo?

    
risposta data 19.10.2018 - 19:12
fonte

Leggi altre domande sui tag