博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#获取磁盘驱动器图标、文件夹图标,文件默认图标
阅读量:6154 次
发布时间:2019-06-21

本文共 3607 字,大约阅读时间需要 12 分钟。

using System;using System.Collections.Generic;using System.Drawing;using System.Linq;using System.Runtime.InteropServices;using System.Text;using System.Threading.Tasks;namespace Ay.Framework.WPF.Helpers{    public class SystemInfoIcon    {        [DllImport("Shell32.dll")]        private static extern IntPtr SHGetFileInfo        (            string pszPath,            uint dwFileAttributes,            out   SHFILEINFO psfi,            uint cbfileInfo,            SHGFI uFlags        );        [StructLayout(LayoutKind.Sequential)]        private struct SHFILEINFO        {            public SHFILEINFO(bool b)            {                hIcon = IntPtr.Zero; iIcon = 0; dwAttributes = 0; szDisplayName = ""; szTypeName = "";            }            public IntPtr hIcon;            public int iIcon;            public uint dwAttributes;            [MarshalAs(UnmanagedType.LPStr, SizeConst = 260)]            public string szDisplayName;            [MarshalAs(UnmanagedType.LPStr, SizeConst = 80)]            public string szTypeName;        };        private enum SHGFI        {            SmallIcon = 0x00000001,            LargeIcon = 0x00000000,            Icon = 0x00000100,            DisplayName = 0x00000200,            Typename = 0x00000400,            SysIconIndex = 0x00004000,            UseFileAttributes = 0x00000010        }        ///           /// 根据文件扩展名得到系统扩展名的图标          ///           /// 文件名(如:win.rar;setup.exe;temp.txt)          /// 图标的大小          /// 
public static Icon GetFileIcon(string fileName, bool largeIcon) { SHFILEINFO info = new SHFILEINFO(true); int cbFileInfo = Marshal.SizeOf(info); SHGFI flags; if (largeIcon) flags = SHGFI.Icon | SHGFI.LargeIcon | SHGFI.UseFileAttributes; else flags = SHGFI.Icon | SHGFI.SmallIcon | SHGFI.UseFileAttributes; IntPtr IconIntPtr = SHGetFileInfo(fileName, 256, out info, (uint)cbFileInfo, flags); if (IconIntPtr.Equals(IntPtr.Zero)) return null; return Icon.FromHandle(info.hIcon); } /// /// 获取文件夹图标 /// ///
图标
public static Icon GetDirectoryIcon(string dirName,bool largeIcon) { SHFILEINFO _SHFILEINFO = new SHFILEINFO(); int cbFileInfo = Marshal.SizeOf(_SHFILEINFO); SHGFI flags; if (largeIcon) flags = SHGFI.Icon | SHGFI.LargeIcon; else flags = SHGFI.Icon | SHGFI.SmallIcon; IntPtr IconIntPtr = SHGetFileInfo(dirName, 0, out _SHFILEINFO, (uint)cbFileInfo, flags); if (IconIntPtr.Equals(IntPtr.Zero)) return null; Icon _Icon = System.Drawing.Icon.FromHandle(_SHFILEINFO.hIcon); return _Icon; } }}获得系统信息的图标/// /// 转换ICON为ImageSource /// 二〇一五年二月二日 13:56:03 aaronyang /// /// icon资源 ///
public static ImageSource ToIcon2ImageSource(this Icon icon) { //Arguments checking if (icon == null) throw new ArgumentNullException("icon", "The icon can not be null."); ImageSource imageSource = Imaging.CreateBitmapSourceFromHIcon( icon.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); return imageSource; }

 

获取C盘图标:

imgIcon.Source = SystemInfoIcon.GetDirectoryIcon("c:", true).ToIcon2ImageSource() ;

转载于:https://www.cnblogs.com/A-sync/p/5217724.html

你可能感兴趣的文章
博客开通了。。。
查看>>
零基础也能看懂!写给设计师的前端小知识之排版三步走起来
查看>>
健身减脂报告贴
查看>>
9月--菜鸟吐槽日志
查看>>
关于Django启动创建测试库的问题
查看>>
无法打开物理文件 "X.mdf"。操作系统错误 5:"5(拒绝访问。)"。 (Microsoft SQL Server,错误: 5120)解决...
查看>>
HBase伪分布式安装
查看>>
深入浅出Node.js (附录A) - 安装Node
查看>>
基础知识(2)- Java程序设计环境
查看>>
购物商城Web开发第十八天
查看>>
GridView 的一些信息
查看>>
js 中的闭包
查看>>
Linux学习笔记07—mysql的配置
查看>>
python中硬要写抽象类和抽象方法
查看>>
mybatis 模糊查询 like的三种方式
查看>>
oracle包详解(二)【weber出品】
查看>>
FreeModbus undefined reference to `pthread_create'
查看>>
居中对齐
查看>>
c#程序员面试题汇总,方便自己记录
查看>>
周星驰影片经典台词之《唐伯虎点秋香》
查看>>