[转]C# 获取系统文件图标
2024-10-12 21:17:05
//获取文件的图标 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; }
最新文章
- Shell编程中括号判断中赋值语句和判断语句
- HashMap工作原理(转载)
- 活学活用,webapi HTTPBasicAuthorize搭建小型云应用的实践
- 点击事件touches与ios的手势UIGestureRecognizer
- 【转】Oracle之物化视图
- 【leetcode】Palindrome Number (easy)
- 文成小盆友python-num11-(1) 线程 进程 协程
- 其它网页可以上网,IE浏览器打不开网页的解决办法
- [BZOJ]2458: [BeiJing2011]最小三角形
- 前端(一)之 HTML
- ES6学习 --函数参数默认值与解构赋值默认值
- win10系统goole浏览器安装postMan插件
- shiro源码篇 - shiro的session共享,你值得拥有
- R语言 union、setdiff、insect
- 【手势识别】简介 GestureDetector ScaleGestureDetector
- Windows通用知识讲解二
- 第三章:Hadoop简介及配置Hadoop-1.2.1,hbase-0.94.13集群
- [BZOJ4246]两个人的星座(计算几何)
- 通过ip查看主机名和端口占用情况
- day11函数的进阶动态参数,命名空间,作用域,第一类对象
热门文章
- TTL电平、CMOS电平、RS232电平的区别
- QString 与 QByteArray笔记
- CUDA常见问题之无法在c文件中调用cu文件中定义的函数
- Nuget~让包包带上自己的配置信息
- javascript:history.go(-1);
- python的random模块
- android中broadcastreceiver的用法-manifest中注册。
- Hadoop on Mac with IntelliJ IDEA - 2 解决URI错误导致Permission denied
- 为joomla加入下拉菜单的方法
- Android文件选择器的实例分享