我收到的時候我AppleScript的運行和屏保開啓和鎖定屏幕的的AppleEvent超時錯誤。 applescript完成當前的操作,當試圖執行下一個Finder操作時,它不會繼續,而是等待並超時。AppleScript的超時,當屏幕被鎖定
我不能增加超時時間限制,因爲我不會解鎖屏幕都沒有。有沒有辦法忽略等待屏幕解鎖或其他解決方案?
在此先感謝。
我收到的時候我AppleScript的運行和屏保開啓和鎖定屏幕的的AppleEvent超時錯誤。 applescript完成當前的操作,當試圖執行下一個Finder操作時,它不會繼續,而是等待並超時。AppleScript的超時,當屏幕被鎖定
我不能增加超時時間限制,因爲我不會解鎖屏幕都沒有。有沒有辦法忽略等待屏幕解鎖或其他解決方案?
在此先感謝。
我收到(從macscripter.net)最好的答案是使用shell命令,而不是搜索命令,以避免這種超時。
我不知道,所以你的代碼繼續工作,你如何能繞過鎖定的屏幕,但是你可以用一個if語句,這樣當屏幕保護程序運行則不會執行你的代碼。這至少可以防止超時錯誤。例如,假設你想出於某種原因運行一個重複循環10次,並且在屏幕保護程序運行時你不想運行一些代碼......你可以這樣做。
set i to 0
repeat
set screenSaverEngineIsRunning to false
tell application "System Events"
if (exists process "ScreenSaverEngine") then set screenSaverEngineIsRunning to true
end tell
if not screenSaverEngineIsRunning then
set i to i + 1
-- do some code here
end if
delay 1
if i is 10 then exit repeat
end repeat
我想要的代碼來運行,即使屏幕保護程序正在運行。 – Pradeep 2011-03-15 15:31:05
我只是做了使用Python + Appscript做我的腳本,而不是AppleScript的測試,並持續不麻煩我的系統上運行任何用戶已被暫停時(即進入登錄窗口但用戶仍然登錄)或屏幕保存正在運行。這是一個簡單的腳本,但可以證明你需要做什麼。
Appscript帶有ASTranslate它轉換的AppleScript調用到相當於Python的+ Appscript電話。它不處理變量,但通常你可以做一些切割和粘貼來弄清楚如何轉換你的腳本。它的速度非常快,Python是一種非常優秀的語言,可以比Applescript更好地編寫腳本。
#!/usr/bin/python
import sys, os
from appscript import *
import time
def gettodos():
cs = app(u'iCal').calendars.get()
for c in cs:
print c.name()
tds = c.todos()
for t in tds:
print " ", t.summary()
def test():
for i in range(1,1000):
print
print "Run # " + str(i)
print
gettodos()
time.sleep(10)
if __name__ == '__main__':
test()
# change to 0 for success, 1 for (partial) failure
sys.exit(0)
我無法重現您的問題。我試過下面的腳本,即使在屏幕保護程序運行時也能正常工作。
delay 10
tell application "Finder"
name of startup disk
end tell
delay 5
tell application "Finder"
contents of startup disk
end tell
問題必須取決於腳本執行的特定命令。他們是什麼?
這就是我的代碼的樣子:
tell application "Finder" \t duplicate (some_file as string) to (some_folder as string) with replacing \t delete some_file end tell第一個重複命令有效。但是刪除命令不起作用。它等待屏幕解鎖。 – Pradeep 2011-03-30 22:01:18
我收到的最好答案(來自macscripter.net)是使用shell命令而不是Finder命令來避免此超時 – Pradeep 2011-03-30 22:16:02
也許它試圖顯示確認或授權對話框。 Shell命令不會那樣做,是的。但請記住,當Finder的「刪除」將項目移動到垃圾箱時,「rm」命令會立即刪除它們而不會追索。 – LaC 2011-03-31 09:15:20
最好的答案我已經收到(從macscripter.net)是使用shell命令,而不是搜索命令,以避免這種超時) – Pradeep 2011-03-30 22:04:01