如何退出当前正在循环的AppleScript小程序?



我已经根据Robert K的建议修改了这个,但它似乎不起作用。我认为这与"延迟60"的双重用途有关。然后返回30。我知道需要延迟,否则它会在5分钟内被双重触发。如下图所示,它不响应退出命令,所以必须强制退出。

on idle
set myTime to time of (current date) as string
repeat until myTime ≥ 75600 -- stop at 9pm local time

set myTimeB to (round ((time of date ((current date) as string)) / 60) rounding down) mod 5 = 0 --every 5 minutes
if myTimeB then
say "triggered"
end if

delay 60 --less than 30 may cause it to get double triggered.
end repeat
return 30 -- idle time (every 10 minutes)
end idle
on quit {}
display dialog "Sure you want to quit?"
continue quit -- quits the applet
end quit

保持打开状态的应用程序的重复循环在空闲处理程序。阅读一些关于保持开放应用程序的AppleScript指南,以更好地理解它们是如何工作的。在这种情况下,例如,您应该使用这样的代码:

on idle
set myTime to time of (current date)
if myTime ≥ 75600 and myTime < 76201 then
--do something
end if
return 600 -- idle time (every 10 minutes)
end idle
on quit {}
display dialog "Sure you want to quit?"
continue quit -- quits the applet
end quit

另外,请注意,我精确地比较了时间间隔,而不是time = 75600。否则,您的条件可能永远不会得到满足。你不必要求精确的秒命中,因为我们增加了600秒的空闲时间。

最新更新