我怎样才能在以后做点什么,但现在让AppleScript返回?

时间:2010-01-20 22:11:42

标签: applescript

我有一个类似于:

的苹果
using terms from application "iChat"
  on logout finished
    delay 30
    … do some stuff
  end logout finished
end using terms from

这个脚本的问题在于它还会阻止应用程序调用它30秒。我想做的是说“在三十秒内,请为我运行此脚本”,然后将我的所有… do some stuff移动到另一个脚本。但我看不出怎么做?

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

由于您使用的是Mac,我认为您已经安装了Ruby。

你在说什么听起来好像你想让一个线程睡30秒然后在后台执行一个脚本。

您应该将… do some stuff放在名为dostuff.scpt的脚本中,并将其放在桌面上。

然后将当前脚本更改为以下代码:

using terms from application "iChat"
 on logout finished
  do shell script "ruby -e 'Thread.new {`sleep 30 && osascript ~/Desktop/dostuff.scpt`}' &> /dev/null"
 end logout finished
end using terms from

代码细分: 执行shell脚本(从命令行执行某些操作)

ruby​​ -e(从命令行执行ruby代码)

Thread.new(使一个新线程隐藏在后台)

`(反引号中的所有内容都是ruby中的shell命令)

osascript(从命令行执行applescript)

〜/ Desktop / dostuff.scpt(指向你文件的路径名,代字号替换你的主目录,我假设你把dostuff.scpt放在桌面上)

&安培;> / dev / null(Tells Applescript to not look for output and immediately go to the next code line

我试过没有Ruby这样做,但是,我没有运气。如果这对您有用,请告诉我!