AppleScript для диалога разблокировки экрана - PullRequest
1 голос
/ 22 июля 2009

Я написал Applescript, который отключает различные IM-клиенты, закрывает iTunes, а затем запускает мою заставку.

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 ]

3 голосов
/ 22 июля 2009

Очень крутая идея - я никогда не думал об этом. Похоже, вы можете использовать ScriptSaver . Это позволит вам запускать определенные сценарии, когда заставка активирована и деактивирована. Таким образом, вы получите лучшее покрытие, и вам не придется беспокоиться о том, что ваш скрипт будет запущен, если вы только что оставили компьютер включенным.

1 голос
/ 22 июля 2009

Хорошо. После небольшого исследования мне кажется, и это может быть неправильно, что 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 перестает работать, когда появляется окно пароля ... Вы можете либо обойти это, постоянно проверяя, либо добавить длительность задержки, достаточную для ввода пароля ... ни то, ни другое - отличное решение ...

1 голос
/ 22 июля 2009

Один из способов, который я могу придумать, с макушки головы, - это

display dialog "Are you back yet?"

После

activate application "ScreenSaverEngine"

А потом, после этого, все возобновить. Это отобразит диалоговое окно за заставкой, которое позволит вам нажать кнопку, чтобы возобновить все ваши приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...