El proceso no se está ejecutando pero la aplicación se muestra en el dock

1

Tengo un applecript que se ejecuta automáticamente y se basa en la aplicación "Contactos" para ejecutarse. Ocasionalmente, falla cuando el proceso de "Contactos" desaparece misteriosamente del monitor de actividad, aunque el dock todavía lo muestra como ejecutándose.

Lo siguiente NO funcionará:

  1. Applescript "Dile a la aplicación" Contactos "para activar
  2. Applescript "Dile a la aplicación" Contactos 'para salir (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 resuelve 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é ocurre el error yb) cómo puedo atender el error al salir de "Contactos" de Applecript?

Cualquier idea será apreciada

....

En respuesta al comentario de bmike;

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

establezca fecha de hoy a (fecha actual) como texto

* decirle a 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

end tell

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 falla con -600 (la aplicación no se está ejecutando). Un simple applecript para salir de la aplicación también falla con -600.

Por lo tanto, si falta el proceso, la aplicación no se puede activar y el cierre no funciona tampoco.

Gracias por tus comentarios

    
pregunta AdamR 27.11.2015 - 02:49

1 respuesta

1

Al parecer, al fin encontré una manera de superar esto. Es bastante crudo, pero funcionó para mí.

si errorno = -600 entonces                     Dile a la aplicación "Eventos del sistema"                         Dile al proceso "Dock"                             haga clic en el elemento UI "Contactos" de la lista 1                         decirle al final                     decirle al final                     retraso 10: permite que el proceso aparezca en la lista de procesos en algún momento                     Dile a la aplicación "Eventos del sistema"                         Indica al proceso "Contactos" para establecer visible a falso - ejecutar oculto                     decirle al final                 terminar si

Al forzar un clic en el dock, el proceso vuelve a aparecer en la lista de procesos y luego la aplicación se puede cerrar, reiniciar o lo que sea. Extraño.

    
respondido por el AdamR 08.12.2015 - 04:09

Lea otras preguntas en las etiquetas