zoukankan      html  css  js  c++  java
  • C#获取文件图标

    [StructLayout(LayoutKind.Sequential)]
            public struct SHFILEINFO
            {
                public IntPtr hIcon;
                public IntPtr iIcon;
                public uint dwAttributes;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
                public string szDisplayName;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
                public string szTypeName;
            }
    
            /// <summary>  
            /// 返回系统设置的图标  
            /// </summary>  
            /// <param name="pszPath">文件路径 如果为""  返回文件夹的</param>  
            /// <param name="dwFileAttributes">0</param>  
            /// <param name="psfi">结构体</param>  
            /// <param name="cbSizeFileInfo">结构体大小</param>  
            /// <param name="uFlags">枚举类型</param>  
            /// <returns>-1失败</returns>  
            [DllImport("shell32.dll")]
            public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref   SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);
    
            public enum SHGFI
            {
                SHGFI_ICON = 0x100,
                SHGFI_LARGEICON = 0x0,
                SHGFI_USEFILEATTRIBUTES = 0x10
            }
    
    
            /// <summary>  
            /// 获取文件图标 
            /// </summary>  
            /// <param name="p_Path">文件全路径</param>  
            /// <returns>图标</returns>  
            public static Icon GetFileIcon(string p_Path)
            {
                Icon _Icon = Properties.Resources.fileIco;
                try
                {
                    SHFILEINFO _SHFILEINFO = new SHFILEINFO();
                    IntPtr _IconIntPtr = SHGetFileInfo(p_Path, 0, ref _SHFILEINFO, (uint)Marshal.SizeOf(_SHFILEINFO), (uint)(SHGFI.SHGFI_ICON | SHGFI.SHGFI_LARGEICON | SHGFI.SHGFI_USEFILEATTRIBUTES));
                    if (_IconIntPtr.Equals(IntPtr.Zero)) return null;
                    _Icon = System.Drawing.Icon.FromHandle(_SHFILEINFO.hIcon);
                }
                catch
                {
                }
                return _Icon;
            }
    //调用的时候这么调用
    Icon tempIcon = GetFileIcon(fileName);
  • 相关阅读:
    UVa 10213
    树莓派学习路程No.2 GPIO功能初识 wiringPi安装
    树莓派学习路程No.1 树莓派系统安装与登录 更换软件源 配置wifi
    《软件工程》 的课程总结附加题。
    软件工程《个人总结》
    Java super关键字活用
    软件工程:黄金G点小游戏1.0
    Android之获取数据库路径
    Android自定义折线图
    软件工程:vs单元测试
  • 原文地址:https://www.cnblogs.com/qq1223558/p/3118928.html
Copyright © 2011-2022 走看看