使用脚本桥进行回调?

时间:2010-08-03 01:04:27

标签: ruby cocoa macos scripting-bridge

我正在使用Ruby通过Scripting Bridge检查我在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更密集,是否有办法让Scripting Bridge在特定事件发生时触发Ruby块?

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

提前致谢!

1 个答案:

答案 0 :(得分:2)

这不是Scripting Bridge所做的。这只是一种使用Cocoa而不是AppleScript发送和接收Apple Events的方法。您可以做的只受其他应用程序的脚本字典的限制。

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

您可以考虑在自己的应用中显示电影。然后,您可以在事情发生时被动地接收通知,而不必进行轮询。