はじめまして。
さっそくですが、
WinAPIのSHGetFileInfoを使いシステムイメージリストのハンドルの取得までは、できて
いると思うのですが、そのハンドルからイメージを参照できません。
class Shell32
{
public const int NAMESIZE = 80;
public const int MAX_PATH = 256;
public const uint SHGFI_USEFILEATTRIBUTES = 0x4000;
public const uint FILE_ATTRIBUTRE_NORMAL = 0x4000;
public const uint SHGFI_SYSICONINDEX = 0x4000;
public const uint ILD_TRANSPARENT = 0x1;
public const uint SHGFI_ICON = 0x1; // large icon
public const uint SHGFI_LARGEICON = 0x0;// large icon
public const uint SHGFI_SHELLICONSIZE = 0x4;
public const uint SHGFI_SMALLICON = 0x1; // small icon
public const uint SHGFI_TYPENAME = 0x400;
[StructLayout ( LayoutKind.Sequential, CharSet=CharSet.Ansi )]
public struct SHFILEINFO
{
public ulong hIcon;
public int iIcon;
public uint dwAttributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=MAX_PATH)]
public string szDisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=NAMESIZE)]
public string szTypeName;
};
[DllImport(Shell32.dll)]
public static extern uint SHGetFileInfo(
string pszPath,
uint dwFileAttributes,
ref SHFILEINFO psfi,
uint cbFileInfo,
uint uFlags
);
}
テスト--------------------
Shell32.SHFILEINFO shfi = new Shell32.SHFILEINFO();
uint handle = Win32.Shell32.SHGetFileInfo(
C:\\Test.txt,
0,
ref shfi,
(uint) System.Runtime.InteropServices.Marshal.SizeOf(shfi),
Win32.Shell32.SHGFI_SYSICONINDEX | Win32.Shell32.SHGFI_SMALLICON
);
System.Windows.Forms.ImageList list = new System.Windows.Fomrs.ImageList();
list.Handle = IntPtr( handle );
---------------------------
ImageList.Handleは取得専用なので、ハンドルを設定できません。
どうしたらハンドルを使ってイメージリストを作れるのでしょうか?
もしくは、ほかの手段でシステムイメージリストにアクセスする方法があったら教えてく
ださい。
宜しくお願いします。