1 votos

Si se escribe "STOP", haga lo siguiente

¿Sería posible, por ejemplo, que yo codificara un código de repetición muy simple, pero digamos que si escribiera STOP terminaría el programa?

set x to 1

repeat while x is 1
    tell application "Finder"
       activate
       make new Finder window
    end tell
end repeat

y así, por ejemplo, si se introduce STOP se pone x a 2 o algo así?

Gracias

2voto

Oskar Puntos 1242

No - Applescript no es multihilo en el sentido de que puedas configurar dos cosas para que sucedan al mismo tiempo.

Para hacer lo que quieres, necesitarías otro lenguaje que pudiera abrir una ventana para que el usuario pudiera teclear los caracteres a interpretar y cambiar la variable de señal para salir del bucle. Ese lenguaje manejaría múltiples hilos y la comunicación entre los dos procesos para que la configuración del nuevo valor X fuera visible para el otro hilo que ejecuta el bucle.

Si prefieres ceñirte a AppleScript, probablemente podrías hacer lo que quieres utilizando la existencia de un archivo para mantener el bucle en marcha:

if file "semaphore" of application "Finder" exists then
   -- continue processing...
end if

Esto está documentado en https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/conceptual/ASLR_fundamentals.html

Busque la sección titulada Parámetro directo o utilizar la cadena de semáforos para localizar el fragmento que he copiado arriba. Entonces podrías hacer que el usuario borre el archivo "elegido" - tal vez poniéndolo en su escritorio y llamándolo "keepRunning" o algo así para que lo tire a la basura cuando el scriptdeje de ejecutarse.

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