2009-07-21 8 views
1

J'ai écrit un Applescript qui permet de fermer plusieurs clients de messagerie instantanée, ferme iTunes, puis démarre mon économiseur d'écran. Il s'agit d'un économiseur d'écran protégé par mot de passe, et j'essaie (une fois que l'économiseur d'écran est parti) de faire l'inverse. Évidemment, les actions 'tell' pour chaque application ne sont pas un problème, mais je n'arrive pas à trouver comment les faire une fois l'écran déverrouillé. J'ai supposé que ce serait le même qu'un LoginItem, mais ce n'est pas le cas.AppleScript pour la boîte de dialogue de déverrouillage de l'écran

Toute aide appréciée!

Répondre

3

Très bonne idée - Je n'ai jamais pensé à le faire. Il semble que vous souhaitiez utiliser ScriptSaver. Cela vous permettra d'exécuter certains scripts lorsque l'économiseur d'écran est activé et désactivé. Vous obtiendrez une meilleure couverture de cette façon, et vous n'aurez pas à vous soucier de l'exécution de votre script si vous venez de laisser votre ordinateur allumé.

+0

Ah ha. Une meilleure réponse que la mienne. – Josh

+0

Je l'avais regardé, mais il y a un petit bogue dedans (celui par le regard des commentaires que le développeur est conscient de) qui cause des problèmes sur les doubles écrans. Ce n'est pas qu'il ne s'affiche que sur un écran - je cours Flurry et il semble zoomer et brouiller assez mal sur mon (un) écran, ce qui est vraiment difficile à regarder! –

1

Une façon je peux penser, du haut de ma tête, est de

display dialog "Are you back yet?" 

Après

activate application "ScreenSaverEngine" 

Et puis, après, tout reprendre. Cela affichera une boîte de dialogue, derrière l'économiseur d'écran, qui vous permettra de cliquer sur un bouton pour reprendre toutes vos applications.

+0

Bien, merci! Je pense que je vais utiliser cela au moins comme une solution temporaire, mais j'aimerais un moyen de pouvoir le faire automatiquement une fois que j'ai réactivé l'écran. –

1

Ok. Après un peu de recherche, il me semble, et cela pourrait être faux, que ScreenSaverEngine ne fonctionne que lorsque l'économiseur d'écran est en cours d'exécution. Si cela est vrai, le code suivant est plus proche de ce que vous cherchez:

set screenSaverRunning to false 

repeat while not screenSaverRunning 
    try 
     set t to (do shell script "ps awx | grep ScreenSaverEngine | grep -v grep") 
     set screenSaverRunning to true 
    on error errStr number errNum 

    end try 
    delay 1 
end repeat 


--Screen Saver is now running... 


repeat while screenSaverRunning 
    try 
     set t to (do shell script "ps awx | grep ScreenSaverEngine | grep -v grep") 
    on error errStr number errNum 
     set screenSaverRunning to false 
    end try 
    delay 1 
end repeat 

--Screen Saver Stopped/Now at password prompt 

Le seul problème que je vois est, le ScreenSaverEngine cesse de fonctionner lorsque la boîte de mot de passe apparaît ... Vous pouvez soit le travail autour de cette en vérifiant constamment, ou peut-être ajouter un délai assez long pour que vous tapiez votre mot de passe ... aucune n'est une bonne solution ...

Questions connexes