Error de AppleScript


1

Editar: Bueno, ahora parece que simplemente funciona. No tengo idea de lo que está pasando lol.

¿Alguien puede decirme qué está pasando aquí?

tell application "Terminal"
    do script "killall Finder"
    tell application "Finder"
        repeat while running
        end repeat
    end tell

    close window 1
    quit
end tell

tell application "Finder"
    repeat while not running
    end repeat

    activate
end tell

Finder recibió un error: la aplicación no se está ejecutando "número -600

es lo que obtengo Si comento

repeat while not running
end repeat

No obtengo el error, pero si lo dejo y comento

activate

En cambio, tampoco recibo un error. Así que aparentemente interactúan entre sí para causar un error de alguna manera. Si agrego un retraso, puedo evitar el problema, pero no quiero saber por qué lo que tengo causa un error. Tengo OS X 10.9.4.


¿Qué es lo que estás tratando de lograr con este script?
Alistair McMillan

Bueno, supongo que estoy tratando de reiniciar Finder y luego volver a enfocarlo. Hice esto para mostrar el error que recibo de forma simple.
Mason

Me encantaría ayudarlo con esto, desafortunadamente el código funciona bien en mis Mac. :)
Alistair McMillan

Mirando el registro de eventos, veo que de alguna manera el comando de activación se llama una y otra vez como si estuviera en el bucle.
Mason el

qué demonios, cuando coloco 'activar' dentro del bucle, se llama una vez, pero cuando está fuera del bucle, se llama una y otra vez.
Mason el

Respuestas:


1

Estás matando a Finder desde la Terminal, luego le estás diciendo a Finder que 'repita mientras corres' ... simplemente lo mataste, no está corriendo. Tampoco estás haciendo nada en la repetición, solo le estás diciendo al guión que haga girar sus ruedas a toda velocidad. Realmente no tengo idea de lo que estás tratando de lograr con esto.

Si solo desea reiniciar el Finder [Optar / hacer clic derecho en el dock es una manera fácil], intente ...

tell application "Finder" to quit
delay 3
set test to 0
repeat while test = 0
    log test
    tell application "System Events" to set test to count (every process whose name is "Finder")
    delay 2
    --//we do this even if active because it doesn't naturally come to front
    try
        tell application "Finder" to activate
    end try
    if (test > 0) then exit repeat
end repeat

jaja, no sabía que podías salir de Finder a través de AppleScript. Bien, lo que la primera repetición mientras el bucle estaba haciendo era retrasar el programa. Sin eso, el script va más rápido de lo que la computadora puede ejecutar lo que se le dice que haga. El bucle asegura que killall se haya ejecutado antes de cerrar la ventana. Se suponía que el segundo bucle aseguraría que Finder haya terminado de reiniciarse para que el comando de activación funcione.
Mason

error: la aplicación no se está ejecutando ". El número -600 dice más o menos lo que dije, no puede verificar que se esté ejecutando, porque el proceso al que está solicitando la verificación ... no se está ejecutando. Necesita que System Events vigilar eso.
Tetsujin

En el programa original esto ocurrió, la repetición mientras se ejecuta el bucle lo hizo funcionar. En este no hace nada y no es necesario.
Mason
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.