1

我编写了一个 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 相同,但事实并非如此。

任何帮助表示赞赏!

4

3 回答 3

3

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

于 2009-07-21T23:01:36.360 回答
1

我能想到的一种方法是

display dialog "Are you back yet?"

activate application "ScreenSaverEngine"

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

于 2009-07-21T23:03:01.570 回答
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 停止运行......您可以通过不断检查来解决这个问题,或者添加足够长的延迟让您输入密码......很好的解决方案...

于 2009-07-21T23:27:23.487 回答