3

我正在使用 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 块?

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

提前致谢!

4

1 回答 1

2

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

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

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

于 2010-08-03T03:48:41.017 回答