Nico2Mobile進捗っす(iTunesのインストール判定) Nico2Mobile進捗っす(iTunesのインストール判定)

| | コメント(0) | トラックバック(0) はてなブックマークへ追加このエントリーのはてなブックマーク数 Buzzurlへ追加このエントリーのBuzzurlブックマーク数 livedoorクリップへ追加このエントリーのlivedoorクリップ数 Yahoo!ブックマークへ追加人が登録 add to del.icio.us add to Reddit

正常系ならだいたい動くのだけど、世の中に出すためには異常系のフローも想定しておかないといけない。

その一つがiTunesがインストールされていないときどうするか。

C#でiTunesLibというライブラリをインポートするとiTunesCOMが簡単に使える。簡単に使えるのだが・・・COMをそのまま使うのとちょっとやり方が違ってこの異常系をあと回しにしていた。

C++でCOMを使うなら話は簡単で、CoCreateInstaceが失敗すればiTunesCOMがない。つまりiTunesがインストールされていないと判断してよい。あるいは特定の機能が使えるかどうかの判定にQueryInterfaceが成功するか否かで判別することもよくあるだろう。

C#その変どうするのかがよくわかっていなかった。ぐぐるよりもまずは動きを見てみようと、OLE ViewerでiTunesLibのTypeLibraryをみてpathがiTunes.exeになっていることを確認し、iTunes.exeをリネームして実行してみた。

すると、iTunesAppClassクラスをnewするところでSystem.IO.FIleNotFoundExecptionが発生した。メッセージは「CLSID {DC0C2640-1415-4644-875C-6F4D769839BA} を含むコンポーネントの COM クラス ファクトリを取得中に、次のエラーが発生しました: 80070002」だった。

とりあえず、iTunesAppClassのnewのところで捕まえれば良さそうだ。QueryInstafaceの件は単純にcastした結果で見れば良いのだろうか。ない場合はnullなのか例外が発生するのかは今は確かめることができないのでわからない。

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: Nico2Mobile進捗っす(iTunesのインストール判定)

このブログ記事に対するトラックバックURL: http://blog.makotokw.com/mt/mt-tb.cgi/2883

コメントする

Twitter

WALKMAN.LOG

このブログ記事について

このページは、makoto_kwがJune 15, 2008 5:44 PMに書いたブログ記事です。

ひとつ前のブログ記事は「2008/06/13のtwilog」です。

次のブログ記事は「岡田ジャパン3次予選突破(日本xタイ)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。