2 votos

Applescript: Evite que aparezca el mensaje "Elegir aplicación"

Supongamos el siguiente Applescript se ejecuta en una máquina que no tiene una aplicación llamada SomeApp instalado:

if isAppRunning("SomeApp") then
    tell application "SomeApp"
        --Do Something
    end tell
end if

on isAppRunning(theApp)
    tell application "System Events" to set runningApps to (get name of (processes where background only is false))
    if runningApps contains theApp then
         return true
    else
        return false
    end if
end isAppRunning

Porque SomeApp no es todavía presente en esta máquina, el tell application "SomeApp" bloque nunca debe correr!

A pesar de esto, cuando yo uso el código anterior, Applescript, aparecerá el siguiente mensaje:

Where is SomeApp?

¿Cómo puedo evitar que aparezca este mensaje?


Nota 1: El tiempo si este mensaje es impredecible. En el más simple de los scripts, incluyendo el código exacto publicado, sólo aparece en el momento de la compilación. Sin embargo, éste aparecerá en tiempo de ejecución en más de secuencias de comandos complejas.

Nota 2: estoy ejecutando Mac OS X 10.9 Mavericks, que es bastante antiguo de este escrito. No sé si esto está relacionado con el comportamiento que estoy observando.

1voto

Wowfunhappy Puntos 33

La solución es establecer previamente someApp en una variable, y luego hacer que el bloque tell llame a esa variable. El siguiente código, por ejemplo, solucionará el problema:

 set SomeApp to "SomeApp"

if isAppRunning("SomeApp") then
    tell application SomeApp
        --Do Something
    end tell
end if

on isAppRunning(theApp)
    tell application "System Events" to set runningApps to (get name of (processes where background only is false))
    if runningApps contains theApp then
        return true
    else
        return false
    end if
end isAppRunning
 

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