2010-08-03 54 views
3

我正在使用Ruby通过脚本桥检查我在Quicktime中播放的视频的位置。脚本桥回调?

目前我只是检查像这样每n秒位置:

require 'osx/cocoa' 

include OSX 
OSX.require_framework 'ScriptingBridge' 

app = SBApplication.applicationWithBundleIdentifier_("com.apple.QuickTimePlayerX") 

while true 
    app.documents.each do |doc| 
    p doc.currentTime 
    p doc.playing 
    end 
    wait(n_seconds) 
end 

这是更多的CPU比我想,有没有一种方法,使脚本桥接触发一个Ruby块什么时候发生特定事件?

例如。文档打开,关闭,暂停/恢复等?

在此先感谢!

回答

2

这不是Scripting Bridge的功能。这只是一种使用Cocoa而不是AppleScript来发送和接收Apple事件的方式。你所能做的只是被其他应用程序的脚本字典所限制。

所以问题就变成了“QuickTime Player是否有办法注册我的应用程序,以便在发生某些事情时它会向我的应用程序发送一个事件”,并且通过查看其字典确定的答案是没有。

您可以考虑在自己的应用中显示电影。那么当事情发生时,您将能够被动接收通知,而不必轮询。

+0

不幸的是,我不想替换人们的软件,必须与你所拥有的一起工作!感谢这个精心布置的示例 - 如果您有兴趣,请查看我想要做的事情,[http://gist.github.com/503240] – 2010-08-03 13:09:27