Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
ファイルごとにアイコンを変える
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=10470#CommentId21619
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2011/9/24 20:10:34
少々複雑ですが、Shell Extension(シェル拡張)という COM 技術を利用することになります。
IconHandler や IExtractIcon といったキーワードで検索してみてください。
http://msdn.microsoft.com/en-us/library/cc144067%28VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/cc144122%28VS.85%29.aspx
上記の手順に従い、IExtractIcon(とIPersistFile)を実装した COM の DLL を作成し、
それをレジストリに登録してください。IPersistFile は最低限 Load さえ実装すれば OK。
Vista 以降では IInitializeWithFile / IInitializeWithStream もあると良いかも知れません。
拡張子に対して、自作アイコンハンドラーのDLL を登録しておくと、OS 側から、
まず IExtractIcon.GetIconLocation メソッドが呼び出されるようになります。
このメソッドの pwFlags に GIL_NOTFILENAME (=&H8) を返すようにすると、さらに
IExtractIcon.Extract メソッドが呼びだされますので、ここでアイコンを返却します。
アイコンの返却には、アイコンハンドル(HICON)が必要です。この部分は Icon クラスの
Handle プロパティを使っても良いですし、LoadIcon API 等で取得してもよいかと思いますが、
確実なのは LoadIcon の方だと思います。
この手の処理は、インターフェイスの処理途中で不具合があると、エクスプローラーを
巻き込んでクラッシュすることもあるので、十分に注意してくださいね。