1

さまざまな IM クライアントを不在に設定し、iTunes を閉じてからスクリーンセーバーを起動する Applescript を作成しました。

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 と同じだと思っていましたが、そうではありません。

どんな助けでも大歓迎です!

4

3 に答える 3

3

とてもクールなアイデア–私はこれをやろうとは思っていませんでした。ScriptSaverを使用することをお勧めします。これにより、スクリーンセーバーがアクティブ化および非アクティブ化されたときに特定のスクリプトを実行できるようになります。この方法でカバレッジが向上し、コンピューターの電源を入れたままにしておくと、スクリプトの実行について心配する必要がなくなります。

于 2009-07-21T23:01:36.360 に答える
1

私が考えることができる1つの方法は、頭のてっぺんから、

display dialog "Are you back yet?"

activate application "ScreenSaverEngine"

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

于 2009-07-21T23:03:01.570 に答える
1

Ok。少し調査した結果、スクリーンセーバーが実行されているときにのみ 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 の実行が停止することです...常にチェックすることでこれを回避するか、パスワードを入力するのに十分な時間の遅延を追加することができます...どちらも素晴らしい解決策...

于 2009-07-21T23:27:23.487 に答える