ファイルからアイコンを取得する

ファイルに関連づけられたアイコンを取得する場合は、
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のハンドルを保持してるってことかもしれない。
データコピーして使ってる訳じゃないのか?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です