//获取文件的图标
 this.Icon = GetFileIcon(@"c:\gdiplus.dll");
//获取文件夹图标
 this.Icon = GetDirectoryIcon();    

[StructLayout(LayoutKind.Sequential)]
    public struct SHFILEINFO
    {
        public IntPtr hIcon;
        public IntPtr iIcon;
        public uint dwAttributes;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = )]
        public string szDisplayName;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = )]
        public string szTypeName;
    }  

    /// <summary>
    /// 返回系统设置的图标
    /// </summary>
    /// <param name="pszPath">文件路径 如果为""  返回文件夹的</param>
    </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>
    /// 获取文件图标 zgke@sina.com qq:116149
    /// </summary>
    /// <param name="p_Path">文件全路径</param>
    /// <returns>图标</returns>
    public static Icon GetFileIcon(string p_Path)
    {
        SHFILEINFO _SHFILEINFO = new SHFILEINFO();
        IntPtr _IconIntPtr = SHGetFileInfo(p_Path, , ref _SHFILEINFO, (uint)Marshal.SizeOf(_SHFILEINFO), (uint)(SHGFI.SHGFI_ICON | SHGFI.SHGFI_LARGEICON | SHGFI.SHGFI_USEFILEATTRIBUTES));
        if (_IconIntPtr.Equals(IntPtr.Zero)) return null;
        Icon _Icon = System.Drawing.Icon.FromHandle(_SHFILEINFO.hIcon);
        return _Icon;
    }
    /// <summary>
    /// 获取文件夹图标  zgke@sina.com qq:116149
    /// </summary>
    /// <returns>图标</returns>
    public static Icon GetDirectoryIcon()
    {
        SHFILEINFO _SHFILEINFO = new SHFILEINFO();
        IntPtr _IconIntPtr = SHGetFileInfo(, ref _SHFILEINFO, (uint)Marshal.SizeOf(_SHFILEINFO), (uint)(SHGFI.SHGFI_ICON | SHGFI.SHGFI_LARGEICON));
        if (_IconIntPtr.Equals(IntPtr.Zero)) return null;
        Icon _Icon = System.Drawing.Icon.FromHandle(_SHFILEINFO.hIcon);
        return _Icon;
    }

最新文章

  1. Shell编程中括号判断中赋值语句和判断语句
  2. HashMap工作原理(转载)
  3. 活学活用,webapi HTTPBasicAuthorize搭建小型云应用的实践
  4. 点击事件touches与ios的手势UIGestureRecognizer
  5. 【转】Oracle之物化视图
  6. 【leetcode】Palindrome Number (easy)
  7. 文成小盆友python-num11-(1) 线程 进程 协程
  8. 其它网页可以上网,IE浏览器打不开网页的解决办法
  9. [BZOJ]2458: [BeiJing2011]最小三角形
  10. 前端(一)之 HTML
  11. ES6学习 --函数参数默认值与解构赋值默认值
  12. win10系统goole浏览器安装postMan插件
  13. shiro源码篇 - shiro的session共享,你值得拥有
  14. R语言 union、setdiff、insect
  15. 【手势识别】简介 GestureDetector ScaleGestureDetector
  16. Windows通用知识讲解二
  17. 第三章:Hadoop简介及配置Hadoop-1.2.1,hbase-0.94.13集群
  18. [BZOJ4246]两个人的星座(计算几何)
  19. 通过ip查看主机名和端口占用情况
  20. day11函数的进阶动态参数,命名空间,作用域,第一类对象

热门文章

  1. TTL电平、CMOS电平、RS232电平的区别
  2. QString 与 QByteArray笔记
  3. CUDA常见问题之无法在c文件中调用cu文件中定义的函数
  4. Nuget~让包包带上自己的配置信息
  5. javascript:history.go(-1);
  6. python的random模块
  7. android中broadcastreceiver的用法-manifest中注册。
  8. Hadoop on Mac with IntelliJ IDEA - 2 解决URI错误导致Permission denied
  9. 为joomla加入下拉菜单的方法
  10. Android文件选择器的实例分享