2010-08-03 21 views
3

J'utilise Ruby pour vérifier la position des vidéos que je joue dans Quicktime via Scripting Bridge.Rappels avec Scripting Bridge?

En ce moment je suis en train de vérifier la position comme sorte que chaque n secondes:

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 

Ceci est plus consommateur d'UC que je voudrais, est-il un moyen de faire déclencher un bloc de script Pont Ruby quand un événement particulier se produit?

par ex. Lorsqu'un document est ouvert, fermé, suspendu/repris et ainsi de suite?

Merci d'avance!

Répondre

2

Ce n'est pas ce que Scripting Bridge fait. C'est juste un moyen d'utiliser Cocoa au lieu d'AppleScript pour envoyer et recevoir des Apple Events. Ce que vous pouvez faire est limité uniquement par le dictionnaire de script de l'autre application. Donc la question devient "Est-ce que QuickTime Player a un moyen d'enregistrer mon application pour qu'elle envoie un événement à mon application quand certaines choses arrivent", et la réponse, comme déterminé en regardant dans son dictionnaire, est non.

Vous pourriez envisager d'afficher le film dans votre propre application. Ensuite, vous serez en mesure de recevoir passivement des notifications que les choses se produisent au lieu d'avoir à interroger.

+0

Malheureusement, je ne cherche pas à remplacer le logiciel des gens, je dois travailler avec ce que vous avez! Merci pour l'exemple bien présenté - jetez un coup d'oeil à ce que j'essaie de faire, si vous êtes intéressé, [ici] (http://gist.github.com/503240) –