ruby - 使用 Scripting Bridge 进行回调?

标签 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 block ?

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

提前致谢!

最佳答案

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

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

您可能会考虑在您自己的应用中放映这部电影。然后,您将能够在事情发生时被动地接收通知,而不必轮询。

关于ruby - 使用 Scripting Bridge 进行回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3392914/

相关文章:

Ruby/Sinatra Ajax 驱动的应用程序操作指南

html - 如何使用 Nokogiri 删除节点

jquery - 隐藏/显示 Div 效果 - Ruby on Rails 2

cocoa - XCode 调试器中的这些错误意味着什么?

iphone - Cocoa 数组到字符串被截断

ruby-on-rails - 包含关联计数的 Activerecord 查询

objective-c - 在 OSX 上的联系人(例如应用程序)上存储应用程序数据的最佳方式是什么

python - 在 OSX Lion 上强加链接到特定的 python 库

linux - 除非通过符号链接(symbolic link)路径访问,否则将文件设置为只读

macos - ffmpeg 错误 : Could not write header for output file #0 (incorrect codec parameters ?):找不到 Muxer