ファイルに関連づけられたアイコンを取得する場合は、
System::Drawing::Icon::ExtractAssociatedIconあたりで可能らしいが、
任意のファイルの任意のアイコンを取得する時はよく解らない。
よく解らないので、Win32 APIでやってみた。
HICON nhIcon;
System::Drawing::Icon^ chIcon;
::ExtractIconEx( "取得するファイルのパス", (int)アイコンのインデックス番号, NULL, &nhIcon, 1 );
chIcon = System::Drawing::Icon::FromHandle( (System::IntPtr)nhIcon );
上の例では、スモールアイコンのみ取得してるがラージアイコンも同じように取れるはず。
あと、HICONのnhIconの::DestroyIconはchIconが使い終わってからのほうがいいらしい。
FromHandle後、直ぐに解放するとエラーが出たので、
System::Drawing::Iconは、HICONのハンドルを保持してるってことかもしれない。
データコピーして使ってる訳じゃないのか?
投稿者 NMVL : 2006年4月22日 15:53