我正在使用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块?
例如。文档打开,关闭,暂停/恢复等等?
提前致谢!
答案 0 :(得分:2)
这不是Scripting Bridge所做的。这只是一种使用Cocoa而不是AppleScript发送和接收Apple Events的方法。您可以做的只受其他应用程序的脚本字典的限制。
所以问题就变成“QuickTime Player有办法用它来注册我的应用程序,以便在发生某些事情时它会向我的应用程序发送一个事件”,并且通过查看字典确定的答案是否定的
您可以考虑在自己的应用中显示电影。然后,您可以在事情发生时被动地接收通知,而不必进行轮询。