2009-07-21 85 views
1

我已经写了一个Applescript,设置各种即时消息客户端,关闭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是一样的,但事实并非如此。

任何帮助表示赞赏!

回答

3

非常酷的想法 - 我从来没有想过这样做。它看起来像你可能想要使用ScriptSaver。当屏幕保护程序被激活和停用时,这将允许您运行某些脚本。通过这种方式您可以获得更好的覆盖范围,如果您刚开启计算机,则无需担心脚本正在运行。我能想到的,把我的头顶部

+0

啊哈。比我更好的答案。 – Josh 2009-07-21 23:03:19

+0

我曾研究过这个问题,但它有一个小错误(通过开发人员注意到的注释的外观),导致在双屏幕上出现问题。这并不是说它只能在一个屏幕上显示 - 我正在运行Flurry,它似乎在我的(一个)屏幕上变得非常糟糕,非常难以看清! – 2009-07-21 23:07:41

1

的一种方式,是

display dialog "Are you back yet?" 

activate application "ScreenSaverEngine" 

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

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停止时的密码框出现......你既可以工作解决此运行的唯一问题通过不断检查,或者可能会添加足够长的延迟以输入密码...既不是一个好的解决方案...