C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: shell32を使ったプログラムの再配布


(過去ログ 74 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■43053 / inTopicNo.1)  shell32を使ったプログラムの再配布
  
□投稿者/ Cs (1回)-(2009/10/28(Wed) 06:18:44)

分類:[C#] 

こんばんわ。

VS2008のC#で開発をしています。

Shell32を用いて、mp3のID3タグを取得するプログラミングを作成しました。しかし、コンパイルを行ったPCで実行するとうまく動くのですが、再配布パッケージを使って他のPCで実行すると

型 'Shell32.ShellClass' の COM オブジェクトをインターフェイス型 'Shell32.IShellDispatch5' にキャストできません。IID '{866738B9-6CF2-4DE8-8767-F794EBE74F4E}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: インターフェイスがサポートされていません (HRESULT からの例外: 0x80004002 (E_NOINTERFACE))。

上記のエラーがでてプログラムが止まってしまいます。

ShellClass nowPlayShell = new ShellClass();
Folder nowPlayFolder = nowPlayShell.NameSpace(dirPass);
FolderItem nowPlayItem = nowPlayFolder.ParseName(fileName);

のようにShellClassを定義しているのですが、nowPlayShell.NameSpace(dirPass)を呼び出すと上記のエラーが発生します。

他のPCでも実行できるようにしたいのですが、方法がわかりません。
ご教授よろしくお願いします。
引用返信 編集キー/
■43076 / inTopicNo.2)  Re[1]: shell32を使ったプログラムの再配布
□投稿者/ とっちゃん (428回)-(2009/10/28(Wed) 13:41:18)
とっちゃん さんの Web サイト
No43053 (Cs さん) に返信

MSDNライブラリによると、IShellDispatch5 は、Vista 以降に追加されたインターフェースで、
WindowSwitcher というメソッドがあるだけのもののようです(おそらく必要としていない)。

ほかのPCが具体的に何なのかがわからないので何とも言えないところはありますが
具体的に IShellDispatch のどのバージョンのインターフェースまでが必要なのかを
きちんと調査し、それ以上のものを取得しないようにすれば解決できるのではないでしょうか?

NameSpace だけなら一番大元の IShellDispatch(MSDNライブラリ上は、Shellオブジェクト<ただし英語しか文献はない)で十分ですよ。
引用返信 編集キー/
■43086 / inTopicNo.3)  Re[2]: shell32を使ったプログラムの再配布
□投稿者/ たくボン (283回)-(2009/10/28(Wed) 20:05:11)
2009/10/28(Wed) 20:06:12 編集(投稿者)

No43053 (Cs さん) に返信
> こんばんわ。
>
> VS2008のC#で開発をしています。
>
> Shell32を用いて、mp3のID3タグを取得するプログラミングを作成しました。しかし、コンパイルを行ったPCで実行するとうまく動くのですが、再配布パッケージを使って他のPCで実行すると

ID3タグの取得はCでしか作ったことないからshell32はわからんけど、

http://www.atmarkit.co.jp/fdotnet/dotnettips/591mp3tags/mp3tags.html

こんな感じで取得してるんかな?
shell32がどこまでID3タグをカバーできてるかわからんけど、ID3タグは色々紆余曲折した歴史があるからそれ用に作成しておかないと文字化けとかする時があるかも。
(まぁ、Windowsで作成したMP3だけ対象にするのなら多分問題ないと思うけど。)

開発って書いてるから商用かもしれんから、商用なら自作するのがいいのかも。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -