Hatena::ブログ(Diary)

林檎な日々 このページをアンテナに追加 RSSフィード

2010-01-28

ScriptingBridgeの初歩の初歩

今日は社内勉強会でScriptingBridgeについて喋ったので、こちらにも書いておきます。

喋ったと言っても詳しいわけではなく、自分の勉強したことを共有しただけなので、間違いがあれば指摘頂けれると幸いです。


ScriptingBridgeとは、一言で言うとCocoaで他のアプリケーションと連携する仕組み」

Windowsで言うところのActiveX(OLE)コントロールです。

ScriptingBridgeは、OS10.5からの機能で、それまではAppleScriptを使わないと連携できなかったようです。

(すみません、AppleScriptは経験がありません)

AppleScript単体ではなく、自分のCocoaアプリケーションに組込むには手間がかかったようで、ScriptingBridgeはそれに比べて簡単という利点があります。

事前準備

Appleのドキュメントによると事前準備がいるようです。

  1. Scriptingアプリケーションのためのヘッダファイルを生成する
  2. 生成したヘッダファイルをプロジェクトに追加する
  3. ヘッダファイルをimportする
  4. Scripting Bridgeフレームワークをプロジェクトに追加する

ここでのポイントは1です

iTunesを例にすると、ターミナルで下記を実行すると生成されます。

sdef /Applications/iTunes.app | sdp -fh --basename iTunes

  • sdef コマンド:

指定したアプリケーションからスクリプト定義(scripting definitions) をXMLで取得する

  • sdp コマンド:

それをObjective-Cのヘッダファイルに加工する

詳しくはManコマンドで・・・

実際に使う

これが拍子抜けするくらい簡単です。

今回はiTunesの現在再生中の曲名とアーティスト名の取得、そして前と後の曲へのスキップです。

まずはヘッダファイルで定義を

iTunesApplication *iTunesApp;

そして、applicationDidFinishLaunchingあたりで

iTunesApp = [SBApplication applicationWithBundleIdentifier: @"com.apple.iTunes"];

もうこれで後はこのインスタンスiTunesAppを使って操作や取得ができます。

再生中の曲名、アーティスト名を取得するなら

NSString *currentTrackName = [iTunesApp.currentTrack name];

NSString *currentArtist = [iTunesApp.currentTrack artist];


前後の曲にスキップするなら

[iTunesApp nextTrack];

[iTunesApp backTrack];

数行で実現してしまいます。

AppleのサンプルコードにはMail.appとFinderを使うのがありますし、他にもScriptingBridgeで連携できるアプリがあるようです。

最後にAppleのドキュメントのリンクを。

Introduction to Scripting Bridge Programming Guide for Cocoa

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/kacchi0516/20100128/1264609814
リンク元
Connection: close