Macos 解锁屏幕对话框的AppleScript

Macos 解锁屏幕对话框的AppleScript,macos,applescript,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

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


感谢您的帮助

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

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

我能想到的一种方法是

display dialog "Are you back yet?"
之后

activate application "ScreenSaverEngine"

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

我能想到的一个方法是,在我的脑海中

display dialog "Are you back yet?"
之后

activate application "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

我看到的唯一问题是,当密码框出现时,屏幕保护引擎停止运行。。。您可以通过不断检查来解决此问题,或者可能会添加足够长的延迟,以便您输入密码。。。两者都不是很好的解决方案…

好的。经过一点研究,在我看来,屏保引擎只在屏保运行时运行,这可能是错误的。如果这是真的,则以下代码更接近您要查找的内容:

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

我看到的唯一问题是,当密码框出现时,屏幕保护引擎停止运行。。。您可以通过不断检查来解决此问题,或者可能会添加足够长的延迟,以便您输入密码。。。这两种方法都不是很好的解决方案……

啊哈。一个比我更好的答案。我已经研究过这个问题,但是它有一个小错误(从开发人员注意到的注释来看),它会导致双屏出现问题。这并不是说它只显示在一个屏幕上——我正在运行Flurry,它在我的(一个)屏幕上看起来缩放和模糊得很厉害,这真的很难看到!啊哈。一个比我更好的答案。我已经研究过这个问题,但是它有一个小错误(从开发人员注意到的注释来看),它会导致双屏出现问题。这并不是说它只显示在一个屏幕上——我正在运行Flurry,它在我的(一个)屏幕上看起来缩放和模糊得很厉害,这真的很难看到!很好,谢谢!我想我至少会用它作为一个临时解决方案,但我希望有一种方法能够在重新激活屏幕后自动完成。很好,谢谢!我想我至少会把它作为一个临时解决方案,但我希望有一种方法能够在重新激活屏幕后自动完成。