如何得到某文件类型在当前系统上的图标?需求是得到某目录下的文件列表,并且
显示相应的图标(文件在资源浏览器中显示时的图标)。得到文件列表很容易,但不知道怎么得到相应的图标。谢谢!

解决方案 »

  1.   

    [DllImport("Shell32.dll")]
            private static extern IntPtr SHGetFileInfo
            (
                string pszPath,
                uint dwFileAttributes,
                out SHFILEINFO psfi,
                uint cbfileInfo,
                SHGFI uFlags
            );
            private enum SHGFI
            {
                SHGFI_ICON = 0x000000100,     // get icon
                SHGFI_DISPLAYNAME = 0x000000200,     // get display name
                SHGFI_TYPENAME = 0x000000400,     // get type name
                SHGFI_ATTRIBUTES = 0x000000800,     // get attributes
                SHGFI_ICONLOCATION = 0x000001000,     // get icon location
                SHGFI_EXETYPE = 0x000002000,     // return exe type
                SHGFI_SYSICONINDEX = 0x000004000,     // get system icon index
                SHGFI_LINKOVERLAY = 0x000008000,     // put a link overlay on icon
                SHGFI_SELECTED = 0x000010000,     // show icon in selected state
                SHGFI_ATTR_SPECIFIED = 0x000020000,     // get only specified attributes
                SHGFI_LARGEICON = 0x000000000,     // get large icon
                SHGFI_SMALLICON = 0x000000001,     // get small icon
                SHGFI_OPENICON = 0x000000002,     // get open icon
                SHGFI_SHELLICONSIZE = 0x000000004,     // get shell size icon
                SHGFI_PIDL = 0x000000008,     // pszPath is a pidl
                SHGFI_USEFILEATTRIBUTES = 0x000000010     // use passed dwFileAttribute
            }        private struct SHFILEINFO
            {
                public SHFILEINFO(bool b)
                {
                    hIcon = IntPtr.Zero; iIcon = 0; dwAttributes = 0; szDisplayName = ""; szTypeName = "";
                }
                public IntPtr hIcon;
                public int iIcon;
                public uint dwAttributes;
                [MarshalAs(UnmanagedType.LPStr, SizeConst = 260)]
                public string szDisplayName;
                [MarshalAs(UnmanagedType.LPStr, SizeConst = 80)]
                public string szTypeName;
            };        public static Icon GetIcon(string strPath, bool bSmall)
            {
                SHFILEINFO info = new SHFILEINFO(true);
                int cbFileInfo = Marshal.SizeOf(info);
                SHGFI flags;
                if (bSmall)
                    flags = SHGFI.SHGFI_ICON | SHGFI.SHGFI_SMALLICON;//16*16小图标
                else
                    flags = SHGFI.SHGFI_ICON | SHGFI.SHGFI_LARGEICON;//32*32大图标            SHGetFileInfo(strPath, 256, out info, (uint)cbFileInfo, flags);            return Icon.FromHandle(info.hIcon);
            }图标GetIcon(文件名,true)

     imageList1.Images.Add(GetIcon(text2, true));
      

  2.   

    http://www.codeproject.com/vb/net/VbNetExpTree.asp