ページ

2008年10月30日木曜日

アプリケーションを開く(2)「このアプリ..で開く」

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

プレビューは開くことができたので、こんどは起動するアプリケーションを環境設定で自由に選べるようにする。

イメージはファインダの「このアプリケーションで開く」


さてこれを実現するにはファイルを開くのに適したアプリケーションを取得する必要がある。デフォルトのアプリは NSWorkspace#getInfoForFile:application:type: で取れそうだが、オープン可能なアプリ一覧となると NSWorkspace では役不足のようだ。

MacOSXには Launch Services という API が用意されていれていて、このあたりを扱うことができる。

Launch Services Programming Guide

このAPIの中に LSCopyApplicationURLsForURL という関数が用意されていて、これが使えそうだ。

(参考)Re: Get list of possible applications


早速サンプルアプリを作って試してみる。

サンプル:FindingAllApps-1.zip

実行するとソースに付随している画像ファイル pro.jpg を開くことができるアプリの一覧がコンソールへ出力される。


コードはこんな感じ。

 NSString* path = [[NSBundle mainBundle] pathForImageResource:@"pro"];
NSURL* url = [NSURL fileURLWithPath:path];
NSArray* array = [(NSArray*)LSCopyApplicationURLsForURL((CFURLRef)url, kLSRolesAll) autorelease];
NSLog(@"%@", array);


実行結果。