DOBON.NET DOBON.NETプログラミング掲示板過去ログ

システムイメージリストの使用

環境/言語:[Win2k C# .NETFramework1.1]
分類:[.NET]

SHGetFileInfoを使ってシステムイメージリストを
取得することはわかるのですが、そこからがわかりません。
検索してもC++ばかりヒットするのでどうも・・・
使用言語はC#です。
よろしくお願いします
一般的なプラットフォーム呼び出しの手順を行うことになると思います(大変面倒な手順です)。

SHGetFileInfo関数とSHFILEINFO構造体を定義してSHGetFileInfo関数を呼び出すことになります。

システムイメージリストの取得は4番目の引数にSHGFI_SYSICONINDEXを渡して呼び出した返り値がイメージリストのハンドルになります。
また、SHFILEINFO構造体のiIconにはリストの最後のインデックスが入ります。

こうして得られたハンドルからImageList_GetIcon()関数を利用してアイコンのハンドルを取得することができるのでIcon.FromHandleメソッドでIconハンドルを得ることができます。
レスありがとうございます

デスクトップなどのアイコンは取得することができたのですが
マイドキュメントだけは普通のフォルダアイコンになってしまいます。

これだけは、mydocs.dllなどからExtractIconなどで
引っ張ってくるしかないのでしょうか?
> これだけは、mydocs.dllなどからExtractIconなどで
> 引っ張ってくるしかないのでしょうか?
どうやらそのようです。
マイドキュメントなどの特殊なディレクトリのアイコンはシェル拡張に依るものらしく、システムイメージリストには含まれないようです。
■No3640に返信(Codingslaveさんの記事)
>>これだけは、mydocs.dllなどからExtractIconなどで
>>引っ張ってくるしかないのでしょうか?
> どうやらそのようです。
> マイドキュメントなどの特殊なディレクトリのアイコンはシェル拡張に依るものらしく、システムイメージリストには含まれないようです。

どうもありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板