1 votos

Applescript Tell Aplicación de la Instancia Específica

Si tengo 2 instancias de una aplicación en ejecución, y quiero apuntar a una de ellas por su PID para ejecutar un fragmento de Applescript, ¿cómo lo haría? Tengo el PID de la instancia a la que quiero dirigirme, pero si ejecuto lo siguiente, se ejecutará en la última instancia que se haya iniciado.

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

¿Existe alguna forma de establecer una instancia como "Frontmost" para que se dirija a ella, u obtener una aplicación por PID y decírselo específicamente?

Gracias.

0 votos

¿Qué versión de MacOS utilizas?

0 votos

@GrahamMiln 10.12.6

0 votos

¿Tienes experiencia en programación? Espero que una combinación de Scripting Bridge y una pequeña aplicación lo consiga. Esto está más allá de Ask Different pero si puede justificar una tarifa, por favor póngase en contacto.

1voto

Steve Evans Puntos 155

Enfoque del puente de scripting

Con ScriptingBridge crear un SBApplication con aplicaciónConIdentificadorDeProceso: y luego puede llamar a los métodos de AppleScript puenteados en el proceso de su elección.

Resumen

Scripting Bridge es una tecnología que permite controlar las aplicaciones de Apple y de terceros mediante la sintaxis estándar de Objective-C. Introducido en la versión 10.5 de OS X (Leopard), el marco de trabajo de Scripting Bridge implementa dinámicamente un puente Objective-C para aplicaciones compatibles con OSA, es decir, aplicaciones que tienen una interfaz de scripting (normalmente definida en un archivo sdef). Como parte de esta implementación, genera implementaciones de clases Objective-C de las clases que encuentra en la interfaz de scripting, incluyendo objetos y métodos que representan propiedades, elementos, comandos, etc. Los objetos se derivan de las clases definidas en el marco de Scripting Bridge.

Enfoque AppleScript

A debate sobre MacScripter sugiere este enfoque:

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

Véase también: ¿Cómo activar una aplicación de Mac OS X con un ID de proceso determinado?

0 votos

@grahm-miln ¡Gracias! Eso hace que el PID objetivo se sitúe en el frontmost, pero parece que al ejecutar un tell application appName después de eso sigue apuntando a la instancia que se ejecutó primero, no a la más antigua. ¿Hay alguna manera de llamar a la aplicación de ese proceso con un tell application ¿llamar después de identificarlo?

0 votos

Hace tell application (path to frontmost application as text) ... de stackoverflow.com/questions/17613293/ ¿trabajo?

0 votos

Me sigue apareciendo el error: Expected end of line but found “"”. en mi cadena script cuando intento ese método: tell application (path to frontmost application as text) to DoScript "alert()" Incluso si consiguiera que ese método funcionara, no estoy seguro de que resolviera el problema, ya que la ruta sería la misma para ambas instancias de la aplicación...

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X