2009-07-21 89 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停止時的密碼框出現......你既可以工作解決此運行的唯一問題通過不斷檢查,或者可能會添加足夠長的延遲以輸入密碼...既不是一個好的解決方案...