//获取文件的图标
 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;
    }

[转]C# 获取系统文件图标的更多相关文章

  1. Qt5获取系统文件图标,文件路径

    获取系统图标: QFileIconProvider icon_provider; QIcon icon = icon_provider.icon(QFileIconProvider::Folder); ...

  2. SOUI界面库 添加 windows系统文件图标皮肤

    最近在学习soui界面库.其中有用到SListCtrl这个控件来现在文件信息.控件用法基本上和mfc 的CListCtrl差不多.也支持图标显示.但是图标是要自己加入图标图片的.这个就有点不好弄.于是 ...

  3. 封装:Windows系统文件图标

    原文:封装:Windows系统文件图标 用途:用于获取文件系统默认图标 using System; using System.Collections.Generic; using System.Dra ...

  4. iOS获取app图标和启动图片名字(AppIcon and LaunchImage's name)

    在某种场景下,可能我们需要获取app的图标名称和启动图片的名称.比如说app在前台时,收到了远程通知但是通知栏是不会有通知提醒的,这时我想做个模拟通知提示,需要用到icon名称:再比如在加载某个控制器 ...

  5. 获取应用图标,Drawable 转bitmap

    获取应用图标: PackageManager p = context.getPackageManager(); Drawable draw=null; ApplicationInfo info; tr ...

  6. 在Vista或更高版本Windows系统中, 获取超大图标的办法

    这几天写个小东西, 需要获取系统正在运行的程序图标, 一般来说32*32就足够了, 不过既然Win7能够支持超大图标(256*256), 咱们也需要与时俱进, 说不定什么时候遇到个变态客户就有这要求了 ...

  7. windows程序设计 获取系统文件路径

    获取系统文件路径,打印到txt文件中. #include <windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hP ...

  8. C# 获取文件图标

    今天突然想到一个问题,如何去获取一个文件的关联图标呢?于是就上网搜索了一下.现总结如下: 首先明确问题:获取一个文件的关联图标或者是某个类型文件的显示图标. 在网上搜了一圈,发现方法还是比较多的,但是 ...

  9. 【SSH网上商城项目实战22】获取银行图标以及支付页面的显示

        转自: https://blog.csdn.net/eson_15/article/details/51452243 从上一节的小demo中我们搞清楚了如何跟易宝对接以及易宝的支付流程.这一节 ...

随机推荐

  1. redis神器

    redis是内存型数据库,数据保存在内存中,通过tcp直接存取,优势是速度快,并发高,缺点是数据类型有限,查询功能不强,一般用作缓存. redis具有持久化机制,可以定期将内存中的数据持久化到硬盘上. ...

  2. Spring MVC Framework 实例

    一 SpringMVC基础入门,创建一个HelloWorld程序 1 首先,导入SpringMVC需要的jar包. commons-logging-<version>.jar spring ...

  3. Java学习笔记(八):集合类

    Java中对数据的存储会使用到集合类,下面我们来看看Java中常用的集合类. Collection接口 集合的接口,可以简单的理解为可以动态扩充的数组. Collection接口定义了很多相关的方法, ...

  4. ASP.NET MVC- Area 使用

    ASP.NET MVC允许使用 Area(区域)来组织Web应用程序,每个Area代表应用程序的不同功能模块.这对于大的工程非常有用,Area 使每个功能模块都有各自的文件夹,文件夹中有自己的Cont ...

  5. typdef struct 语法

    1:结构体 C语言中定义一个结构体的语法如下: struct tagMyStruct { int age; int sex; }; 其中,tagMyStruct是结构体名,在使用时,需要和struct ...

  6. Unity中关于等待的函数

    public void InvokeRepating(string methodName,float time,float repeatRate); 语法 注: 1.methodeName为调用的方法 ...

  7. VB连接Mysql数据库

    当然机器装有mysql数据库 然后下载安装Mysql,odbc驱动 须要加入ado'菜单"project"->"引用" 找 Microsoft Activ ...

  8. 苹果ipa软件包破解笔记

    苹果的验证机制: Appstore上的应用都採用了DRM(digital rights management)数字版权加密保护技术,直接的表现是A帐号购买的app,除A外的帐号无法使用,事实上就是有了 ...

  9. C 高级编程3 静态库与动态库

    http://blog.csdn.net/Lux_Veritas/article/details/11934083http://www.cnblogs.com/catch/p/3857964.html ...

  10. C++编译器默默编写并调用哪些函数

    什么时候empty class(空类)不再是个empty class呢?当C++处理过它之后,是的,如果你自己没有声明,编译器就会为它声明(编译器版本)一个copy构造函数.一个copy assign ...