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

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

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

Re[7]: ファイルの拡張子に関連づけられたアイコンを表示したい


(過去ログ 87 を表示中)

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

■52027 / inTopicNo.1)  ファイルの拡張子に関連づけられたアイコンを表示したい
  
□投稿者/ のんたん (1回)-(2010/07/29(Thu) 14:20:37)

分類:[VB.NET/VB2005 以降] 

VB2008で作成しているWindowsフォーム上に、ファイルのリストのようなものを表示させようと思います。
ListViewは使ったことがないので、これを試してみようと思っています。

このリストに、ファイルの拡張子に関連付けられたアイコンを表示させることができればいいなと思っています。
当然、PCによってはファイルの拡張子に関連付けられたアイコンが異なる場合もありますので、
そのPCで関連づけられているアイコンを表示したいのですが、そのようなことは可能でしょうか?
もし可能なのであれば、その方法をお教え頂けないでしょうか?

宜しくお願い致します。
引用返信 編集キー/
■52029 / inTopicNo.2)  Re[1]: ファイルの拡張子に関連づけられたアイコンを表示したい
□投稿者/ マサヤ (84回)-(2010/07/29(Thu) 14:33:03)
これじゃだめですか?
http://www.atmarkit.co.jp/fdotnet/dotnettips/432extracticon/extracticon.html
引用返信 編集キー/
■52031 / inTopicNo.3)  Re[1]: ファイルの拡張子に関連づけられたアイコンを表示したい
□投稿者/ 魔界の仮面弁士 (1723回)-(2010/07/29(Thu) 14:37:38)
No52027 (のんたん さん) に返信
> このリストに、ファイルの拡張子に関連付けられたアイコンを表示させることができればいいなと思っています。
拡張子から得られる場合もありますが、基本的には物理ファイルが要求されます。
これは、*.cur や *.ico ファイルなどを想像すると分かりやすいでしょう。

画像ファイル以外でも、たとえば複数バージョンの Visual Studio をインストールしている
環境の場合、*.sln ファイルのアイコンは、そのファイルの内容に応じて、
アイコン右上の数字が、[6] [7] [7.1] [8] [9] [10] などと切り替わります。

> そのPCで関連づけられているアイコンを表示したいのですが、そのようなことは可能でしょうか?
まずは、Icon.ExtractAssociatedIcon メソッドを試してみてください。
引用返信 編集キー/
■52035 / inTopicNo.4)  Re[2]: ファイルの拡張子に関連づけられたアイコンを表示したい
□投稿者/ のんたん (2回)-(2010/07/29(Thu) 15:59:43)
マサヤさん、魔界の仮面弁士さん、ご回答ありがとうございました。
Icon.ExtractAssociatedIconメソッドでアイコンを得ることができました。
ところで、アイコンのサイズを48×48(エクスプローラでいうところの中アイコンのサイズ)で表示させたい場合はどうすればよいでしょうか?
ListView1.ViewをLargeIconにし、ImageList1.imageSizeを48, 48にして、
以下のようにしてリストビューを作成したのですが、48×48のアイコンより画質が悪いようです。
(もっと小さいサイズのアイコンを引き延ばしたような感じです。)

Dim strFile As String = ファイル名
Dim ico As Icon = Icon.ExtractAssociatedIcon(strFile)
ListView1.LargeImageList = ImageList1
ImageList1.Images.Add(ico.ToBitmap)
ListView1.Items.Add("test")

アイコンから48×48のビットマップを取り出せれば一番いいのですが、どのようにすればよいのでしょうか?
宜しくお願い致します。

引用返信 編集キー/
■52037 / inTopicNo.5)  Re[3]: ファイルの拡張子に関連づけられたアイコンを表示したい
□投稿者/ マサヤ (85回)-(2010/07/29(Thu) 16:09:49)
これじゃないですか?
http://www.atmarkit.co.jp/fdotnet/dotnettips/559thumbnail/thumbnail.html
引用返信 編集キー/
■52048 / inTopicNo.6)  Re[4]: ファイルの拡張子に関連づけられたアイコンを表示したい
□投稿者/ のんたん (3回)-(2010/07/29(Thu) 18:01:03)
No52037 (マサヤ さん) に返信
> これじゃないですか?
> http://www.atmarkit.co.jp/fdotnet/dotnettips/559thumbnail/thumbnail.html

マサヤさん、ご回答ありがとうございます。
しかし、これはサムネイルの作成方法ですよね?
そうではなくて、アイコンより48×48(あるいはそれ相当)のイメージを取得する方法を知りたいのです。
どうやら上記で取得されるサイズは32×32位のようですが、このアイコンには48×48のサイズも含まれているはずです。
宜しくお願い致します。
引用返信 編集キー/
■52049 / inTopicNo.7)  Re[5]: ファイルの拡張子に関連づけられたアイコンを表示したい
□投稿者/ todo (34回)-(2010/07/29(Thu) 18:15:47)
Icon コンストラクタ (Icon, Int32, Int32)
http://msdn.microsoft.com/ja-jp/library/ms142129(v=VS.85).aspx
引用返信 編集キー/
■52057 / inTopicNo.8)  Re[6]: ファイルの拡張子に関連づけられたアイコンを表示したい
□投稿者/ のんたん (4回)-(2010/07/30(Fri) 09:48:34)
No52049 (todo さん) に返信
> Icon コンストラクタ (Icon, Int32, Int32)
> http://msdn.microsoft.com/ja-jp/library/ms142129(v=VS.85).aspx

todoさん、ありがとうございます。
しかし、このアドバイスを参考に、アイコンのインスタンス作成時に

Dim ico As Icon = New Icon(Icon.ExtractAssociatedIcon(strFile), 48, 48)

としたのですが、対応前と変わりないようです。
もしかしたら、Icon.ExtractAssociatedIconの段階では48×48のアイコン情報は欠落しているのではないでしょうか。
その他の方法があればお教え頂きたく、宜しくお願い致します。
引用返信 編集キー/
■52074 / inTopicNo.9)  Re[7]: ファイルの拡張子に関連づけられたアイコンを表示したい
□投稿者/ aetos (320回)-(2010/07/30(Fri) 11:56:38)
2010/07/30(Fri) 12:50:02 編集(投稿者)

No52057 (のんたん さん) に返信

.NET Framework の機能だけでは無理みたいですね。
http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.languages.csharp/2008-04/msg00003.html

おそらく、システムの設定で大きいアイコンのサイズ(GetSystemMetrics(SM_CX/CYICON) で取得できるサイズ)が 48x48 に設定されていれば取得できるような気がします(どうやって設定するのか忘れました。Win7 では設定項目がなくなってる?)。
そうでなければ、SHGetFileInfo でも SHGFI_LARGEICON / SHGFI_SMALLICON という設定しかないので無理でしょう。

アンマネージ API を駆使すればできるようです。ここによくまとまっています。
http://d.hatena.ne.jp/yuki_endo/20050530/1117447904
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -