2009-07-21 8 views
1

さまざまなIMクライアントを離れて設定し、iTunesを終了してからスクリーンセーバーを起動するAppleScriptを書いています。AppleScript for unlock screenダイアログ

tell application "Adium" 
    go away 
end tell 

tell application "Skype" 
    send command "SET USERSTATUS AWAY" script name "StatusSetter" 
end tell 

tell application "iTunes" 
    if player state is playing then 
     pause 
    end if 
end tell 

activate application "ScreenSaverEngine" 

これはパスワードで保護されたスクリーンセーバーです。スクリーンセーバーが消えたら、その逆をやろうとしています。明らかに、それぞれのアプリケーションのための「告知」アクションは問題ではありませんが、画面がロック解除されたら、これらを行う方法を見つけることができません。私はこれがLoginItemと同じであると仮定しましたが、そうではありません。

答えて

3

非常にクールなアイデア - 私はこれをやろうとは考えていませんでした。 ScriptSaverを使用すると思われます。これにより、スクリーンセーバーがアクティブ化され、非アクティブ化されたときに特定のスクリプトを実行できます。この方法でより良いカバレッジを得ることができます。コンピュータを離れたままにしておけば、スクリプトの実行について心配する必要はありません。私は私の頭の上から、と考えることができます

+0

Ah ha。私よりも良い答えです。 – Josh

+0

私はこれを調べていましたが、ダブルスクリーンで問題を引き起こす小さなバグがありました(開発者が認識しているコメントの見方で)。それは1つの画面にしか表示されていません - 私はFlurryを実行しており、実際に見るのが難しい私の(1つの)画面でそれをズームしてぼやけているようです! –

1

一つの方法は、

activate application "ScreenSaverEngine" 

display dialog "Are you back yet?" 

にある。そして、その後、すべてを再開します。スクリーンセーバーの後ろにあるダイアログボックスが表示され、ボタンをクリックしてすべてのアプリケーションを再開できます。

+0

ニース、ありがとう!私はこれを少なくとも一時的な解決策として使うつもりだと思いますが、画面を再起動すると自動的にそれを行う方法が大好きです。 –

1

少しの調査の後、スクリーンセーバーが実行されているときにのみScreenSaverEngineが実行されるということは間違いかもしれません。これが本当であるならば、次のコードは、あなたが探しているものに近いです:

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 

私が見る唯一の問題は、ScreenSaverEngineは、パスワードボックスが表示されたら...あなたはこれを回避する可能性のいずれかの実行を停止しあなたのパスワードを入力するのに十分な長さの遅延を追加することによって、いつでもチェックすることができます。どちらも素晴らしい解決策です...