C#获取系统文件及文件夹图标
2013-01-25 16:25
232 查看
using System; using System.Runtime.InteropServices; using System.Windows.Forms; using System.IO; using System.Drawing; class GetSysicon { /// <summary> /// 获得指定文件图标句柄 /// </summary> /// <param name="path">指定的文件名</param> /// <param name="fileattribute">文件属性</param> /// <param name="?">返回的文件信息</param> /// <param name="SizeFileInfo">sfinfo的比特值</param> /// <param name="flag">指明要返回的文件信息标识符</param> /// <returns>文件的图标句柄</returns> [DllImport("shell32.dll", EntryPoint = "SHGetFileInfo")] public static extern IntPtr SHGetFileInfo(string path, uint fileattribute, ref SHFILEINFO sfinfo , uint SizeFileInfo, uint flag); /// <summary> /// 图标结构 /// </summary> [StructLayout(LayoutKind.Sequential)]//自定义类型 public struct SHFILEINFO { public IntPtr hIcon;//文件的图标句柄 public IntPtr iIcon;//图标的系统索引号 public uint aattributes;//文件的属性值 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]//MarshalAs只是如何在托管代码和非托管代码间传送数据 public string displayname;//文件的显示名 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)] public string typename;//文件的类型 } /// <summary> /// 清除图标 /// </summary> /// <param name="hIcon">图标句柄</param> /// <returns>返回非零表示成功,零表示失败</returns> [DllImport("user32.dll", EntryPoint = "DestroyIcon")] public static extern int DestroyIcon(IntPtr hIcon); /// <summary> /// 获取指定路径的系统图标 /// </summary> /// <param name="path">路径</param> /// <param name="imglist">Imagelist对象保存图标</param> /// <param name="flag">表示是否为获取文件夹图标,true为获取文件夹图标,false为获取文件图标</param> public static void GetSysIcon(string path, ImageList imglist, bool flag) { SHFILEINFO shfi = new SHFILEINFO(); if (flag) { DirectoryInfo dir = new DirectoryInfo(path); if (dir.Name == "RECYCLER" || dir.Name == "RECYCLED" || dir.Name == "Recycled" || dir.Name == "System Volume Information")//windows系统文件夹 { } else { SHGetFileInfo(path, (uint)0x80, ref shfi, (uint)Marshal.SizeOf(shfi),//Marshal.SizeOf返回对象的非托管大小 (uint)(0x100 | 0x400));//取得icon和typename imglist.Images.Add(dir.Name, (Icon)Icon.FromHandle(shfi.hIcon).Clone()); DestroyIcon(shfi.hIcon); } } else { FileInfo file = new FileInfo(path); string exten = Path.GetExtension(path).Substring(1, Path.GetExtension(path).Length-1).ToLower();//获取路径文件的扩展名,并去掉. if (exten=="sys"||exten=="ini"||exten=="bin"||exten=="log"|| exten == "com" || exten == "bat" || exten == "db") {} else { SHGetFileInfo(path,(uint)0x80,ref shfi, (uint)Marshal.SizeOf(shfi),(uint)(0x100|0x400)); imglist.Images.Add(file.Name, (Icon)Icon.FromHandle(shfi.hIcon).Clone()); DestroyIcon(shfi.hIcon); } } } }
您可能也喜欢:
获取系统图标
C# 搜索文件
C#ini文件读写类
C# 判断是文件还是文件夹
JAVA操作access数据库实例代码
WP7 独立存储——独立存储设置 简单实例
C# 设计自己的IP地址编辑框
WP7 播放音乐文件
C# 获取应用程序路径信息
C# 两个窗体间实例方法的调用
WP7编程进度条使用学习
C# 代码创建access数据库
评论这张
转发至微博
转发至微
相关文章推荐
- c# 获取系统和文件夹图标
- C#获取系统文件、文件夹和磁盘驱动器图标
- C# 获取系统文件图标
- C# 获取系统Icon、获取文件相关的Icon
- c# 获取系统文件图标
- 在c#中过滤通过System.IO.Directory.GetDirectories 方法获取的是所有的子目录和文件中的系统隐藏的文件(夹)的方法
- C#获取逻辑驱动器文件系统
- C# 获取系统关联文件图标完整类
- C# 获取系统文件图标
- C# 获取系统关联文件图标完整类
- 在C#中获取各种文件的系统图标
- C#获取系统文件、文件夹和磁盘驱动器图标
- c# 获取系统文件图标
- 用C#和WMI获取逻辑驱动器详细信息(驱动器类型,文件系统,剩余空间等)
- Android使用UncaughtExceptionHandler捕获全局异常 android获取手机信息大全Java追加文件内容使用JavaMail发送邮件OkHttp获取系统时间
- C#获取指定路径下的文件信息
- C# Winform中如何获取文件名与文件路径
- C#获取远程FTP文件列表
- 14、Android开发基础之通过系统提供的方法获取到保存文件的路径
- Android手机文件系统操作——轻松存储与获取手机文件