1 votos

El proceso no se ejecuta pero la aplicación se muestra en el dock

Tengo un applescript que se ejecuta automáticamente y depende de que la aplicación "Contactos" se esté ejecutando. De vez en cuando, falla cuando el proceso "Contactos" desaparece misteriosamente del monitor de actividad, aunque el dock sigue mostrando que se está ejecutando.

Lo siguiente NO funcionará:

  1. Applescript "dile a la aplicación "Contactos" que se active
  2. Applescript "dile a la aplicación "Contactos" que salga (ambos responden con "la aplicación no se está ejecutando")
  3. Applescript "do shell script killall launchserviced" seguido de "killall dock" se ejecuta bien pero no soluciona el problema

La única solución es salir MANUALMENTE de "Contactos" desde el dock y luego reactivarlo pero esa solución no es satisfactoria porque requiere una intervención manual. ¿Alguna idea sobre a) por qué se produce el error y b) cómo puedo subsanar el error cerrando "Contactos" desde applescript?

Cualquier idea será apreciada

....

En respuesta al comentario de bmike;

Ejecutando OS X 10.10.5 y aquí está la sección relevante del applescript

set todaysdate to (fecha actual) as text

*dice la aplicación "Eventos del sistema"

try
    set myprocessid to (get id of process "Contacts")   
on error number errorno
    display dialog errorno
    if errorno is equal to -1728 then -- process not found
        try
            tell application "System Events" to run application "Contacts"
        on error number errorno
            if errorno = -600 then
                display dialog errorno & todaysdate as text
            end if
        end try
        do shell script "/bin/sleep 3" --and allow enough time for the app to activate
    end if
end try

fin del relato

Esta sección intenta activar "Contactos" si encuentra que el proceso no se está ejecutando (error -1728). A continuación, intenta ejecutar la aplicación, pero siempre da error con -600 (aplicación no se está ejecutando). Un simple applescript para salir de la aplicación también da error con -600.

Por lo tanto, si falta el proceso, la aplicación no puede ser activada y salir tampoco funciona.

Gracias por sus comentarios

1voto

lady8506 Puntos 33

Parece que por fin he encontrado la manera de superar esto. Es bastante burdo, pero me ha funcionado.

si errorno = -600 entonces tell aplicación "Eventos del sistema" tell proceso "Dock" haga clic en el elemento de la interfaz de usuario "Contactos" de la lista 1 end tell end tell delay 10 -- permite que el proceso aparezca en la lista de procesos tell aplicación "Eventos del sistema" tell proceso "Contactos" para establecer visible a falso -- ejecutar oculto end tell end if

Al forzar un clic en el dock, el proceso vuelve a aparecer en la lista de procesos y entonces se puede salir de la aplicación, o reiniciarla, o lo que sea. Es extraño.

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