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 が行うことではありません。AppleScript の代わりに Cocoa を使用して Apple Events を送受信する方法にすぎません。できることは、他のアプリケーションのスクリプト辞書によってのみ制限されます。

そのため、「QuickTime Player には、特定のことが起こったときにアプリケーションにイベントを送信するように、アプリケーションを登録する方法がありますか?」という質問になり、辞書を調べて判断した答えはノーです。

代わりに、独自のアプリで映画を表示することを検討してください。そうすれば、ポーリングする代わりに、物事が起こったときに受動的に通知を受け取ることができます.

于 2010-08-03T03:48:41.017 に答える