システムイメージリストの取得 – プログラミング – Home

システムイメージリストの取得
 
通知
すべてクリア

システムイメージリストの取得


ペコ
 ペコ
(@ペコ)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

はじめまして。

さっそくですが、
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は取得専用なので、ハンドルを設定できません。
どうしたらハンドルを使ってイメージリストを作れるのでしょうか?

もしくは、ほかの手段でシステムイメージリストにアクセスする方法があったら教えてく
ださい。
宜しくお願いします。


引用解決済
トピックタグ

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました