AppleScript用于解锁屏幕对话框

时间:2009-07-21 22:39:33

标签: macos applescript

我写了一个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"

这是一个受密码保护的屏幕保护程序,我正试图(一旦屏幕保护程序消失了)反过来。显然,每个应用程序的“tell”操作都不是问题,但是一旦屏幕解锁,我似乎无法找到如何执行这些操作。我确实认为这与LoginItem相同,但事实并非如此。

任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:3)

非常酷的主意 - 我从未想过这样做。看起来您可能想要使用ScriptSaver。这将允许您在激活和停用屏幕保护程序时运行某些脚本。您可以通过这种方式获得更好的覆盖率,如果您刚刚离开计算机,则无需担心脚本会运行。

答案 1 :(得分:1)

我能想到的一种方式,就是

display dialog "Are you back yet?"

之后

activate application "ScreenSaverEngine"

然后,在那之后,恢复一切。这将在屏幕保护程序后面显示一个对话框,允许您单击按钮以恢复所有应用程序。

答案 2 :(得分: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会停止运行...您可以通过不断检查来解决这个问题,或者添加足够长的延迟来输入您的密码......这两个都不是一个很好的解决方案......

相关问题