Обратные вызовы со скриптовым мостом? - PullRequest
3 голосов
/ 03 августа 2010

Я использую Ruby для проверки положения видео, которое я играю в Quicktime через Scripting Bridge.

В данный момент я просто проверяю позицию примерно так каждые 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

Это требует больше ресурсов процессора, чем мне хотелось бы, есть ли способ заставить Scripting Bridge запускать блок Ruby, когда происходит определенное событие?

например. Когда документ открывается, закрывается, приостанавливается / возобновляется и т. Д.

Заранее спасибо!

1 Ответ

2 голосов
/ 03 августа 2010

Это не то, что делает Scripting Bridge.Это просто способ использовать Какао вместо AppleScript для отправки и получения событий Apple.То, что вы можете сделать, ограничено только словарем сценариев другого приложения.

Таким образом, возникает вопрос: «Есть ли у QuickTime Player способ зарегистрировать мое приложение, чтобы оно отправляло событие в мое приложение при определенных событиях?произойдет », и ответ, определяемый поиском в его словаре, - нет.

Вместо этого вы можете рассмотреть возможность показа фильма в собственном приложении.Тогда вы сможете пассивно получать уведомления о том, что происходит, вместо того, чтобы опрашивать.

...