Ejemplo n.º 1
0
        ///<summary>  
        ///通过路径获取图标 
        ///</summary>  
        ///<param name="path">文件或文件夹路径</param>  
        ///<param name="uFlags">uFlags:GetFileInfoFlags.SHGFI_SMALLICON小图标;GetFileInfoFlags.SHGFI_LARGEICON大图标</param>
        ///<returns>获取的图标</returns>   
        public static Icon GetIcon(string path, GetFileInfoFlags uFlags)
        {
            FileInfomation info = new FileInfomation();

            GetFileInfo(path, 0, ref info, Marshal.SizeOf(info), (int)(GetFileInfoFlags.SHGFI_ICON | uFlags));
            try
            {
                return Icon.FromHandle(info.hIcon);
            }
            catch
            {
                return null;
            }
        }
Ejemplo n.º 2
0
        ///<summary>
        ///通过路径获取图标
        ///</summary>
        ///<param name="path">文件或文件夹路径</param>
        ///<param name="uFlags">uFlags:GetFileInfoFlags.SHGFI_SMALLICON小图标;GetFileInfoFlags.SHGFI_LARGEICON大图标</param>
        ///<returns>获取的图标</returns>
        public static Icon GetIcon(string path, GetFileInfoFlags uFlags)
        {
            FileInfomation info = new FileInfomation();

            GetFileInfo(path, 0, ref info, Marshal.SizeOf(info), (int)(GetFileInfoFlags.SHGFI_ICON | uFlags));
            try
            {
                return(Icon.FromHandle(info.hIcon));
            }
            catch
            {
                return(null);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取文件图标+文件信息
        /// </summary>
        /// <param name="fileName">文件类型的扩展名 或 文件的绝对路径</param>
        /// <param name="shFileInfo">文件信息</param>
        /// <param name="isLargeIcon">是否获取大图标</param>
        public static Icon GetFileInfo(string fileName, ref SHFILEINFO shFileInfo, bool isLargeIcon = false)
        {
            GetFileInfoFlags uIconFlags = isLargeIcon ? GetFileInfoFlags.SHGFI_LARGEICON : GetFileInfoFlags.SHGFI_SMALLICON;

            SHGetFileInfo(fileName, (uint)FileAttributeFlags.FILE_ATTRIBUTE_NORMAL, ref shFileInfo, (uint)Marshal.SizeOf(shFileInfo),
                          (uint)(GetFileInfoFlags.SHGFI_USEFILEATTRIBUTES |
                                 GetFileInfoFlags.SHGFI_ICON | uIconFlags |
                                 GetFileInfoFlags.SHGFI_TYPENAME | GetFileInfoFlags.SHGFI_DISPLAYNAME
                                 )
                          );

            Icon icon = Icon.FromHandle(shFileInfo.hIcon).Clone() as Icon;

            User32.DestroyIcon(shFileInfo.hIcon);             //释放资源
            return(icon);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 获取文件夹图标+文件夹信息
        /// </summary>
        /// <param name="shFolderInfo">文件夹信息</param>
        /// <param name="isLargeIcon">是否获取大图标</param>
        /// <param name="isOpenState">是否打开状态</param>
        public static Icon GetFolderIcon(ref SHFILEINFO shFolderInfo, bool isLargeIcon = false, bool isOpenState = false)
        {
            GetFileInfoFlags uIconFlags = isLargeIcon ? GetFileInfoFlags.SHGFI_LARGEICON : GetFileInfoFlags.SHGFI_SMALLICON;
            GetFileInfoFlags uOpenFlags = isOpenState ? GetFileInfoFlags.SHGFI_OPENICON : 0;

            SHGetFileInfo(string.Empty, (uint)FileAttributeFlags.FILE_ATTRIBUTE_DIRECTORY, ref shFolderInfo, (uint)Marshal.SizeOf(shFolderInfo),
                          (uint)(GetFileInfoFlags.SHGFI_USEFILEATTRIBUTES |
                                 GetFileInfoFlags.SHGFI_ICON | uIconFlags | uOpenFlags |
                                 GetFileInfoFlags.SHGFI_TYPENAME | GetFileInfoFlags.SHGFI_DISPLAYNAME
                                 )
                          );

            Icon icon = Icon.FromHandle(shFolderInfo.hIcon).Clone() as Icon;

            User32.DestroyIcon(shFolderInfo.hIcon);             //释放资源
            return(icon);
        }
Ejemplo n.º 5
0
        private static Icon?GetIcon(string path, GetFileInfoFlags flags)
        {
            SHFILEINFO shinfo = new SHFILEINFO();

            try
            {
                SHGetFileInfo(path, 0, ref shinfo,
                              (uint)Marshal.SizeOf(shinfo),
                              (uint)flags);

                return(shinfo.hIcon.ToInt64() != 0x0 ? Icon.FromHandle(shinfo.hIcon) : null);
            }
            catch
            {
                return(null);
            }
        }
Ejemplo n.º 6
0
 private static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref ShellFileInfo psfi, uint cbSizeFileInfo, GetFileInfoFlags uFlags);
Ejemplo n.º 7
0
 public static IntPtr GetFileInfo(string filePath, uint fileAttributes, ref ShellFileInfo fileInfo, GetFileInfoFlags flags)
 {
     return(SHGetFileInfo(filePath, fileAttributes, ref fileInfo, (uint)Marshal.SizeOf(fileInfo), flags));
 }