封装:Windows系统文件图标

2024-05-26 16:58

本文主要是介绍封装:Windows系统文件图标,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用途:用于获取文件系统默认图标

using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;namespace HebianGu.ComLibModule.API
{/// <summary> 获取文件关联图标 </summary>public partial class IconHelper{/// <summary> 返回系统设置的图标 </summary>  /// <param name="pszPath">文件路径 如果为""  返回文件夹的</param>  /// <param name="dwFileAttributes">0</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);/// <summary> 获取文件图标 </summary>  public Icon GetFileIcon(string p_Path){SHFILEINFO _SHFILEINFO = new SHFILEINFO();IntPtr _IconIntPtr = SHGetFileInfo(p_Path, 0, 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> 获取文件夹图标 </summary>  public Icon GetDirectoryIcon(){SHFILEINFO _SHFILEINFO = new SHFILEINFO();IntPtr _IconIntPtr = SHGetFileInfo(@"", 0, 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;}/// <summary> 获取系统图标 </summary>  public Icon GetSystemInfoIcon(string p_Path){if (Path.HasExtension(p_Path)){try{return Icon.ExtractAssociatedIcon(p_Path);}catch{return null;}}else{return this.GetDirectoryIcon();}}}partial class IconHelper{#region - Start 单例模式 -/// <summary> 单例模式 </summary>private static IconHelper t = null;/// <summary> 多线程锁 </summary>private static object localLock = new object();/// <summary> 创建指定对象的单例实例 </summary>public static IconHelper Instance{get{if (t == null){lock (localLock){if (t == null)return t = new IconHelper();}}return t;}}/// <summary> 禁止外部实例 </summary>private IconHelper(){}#endregion - 单例模式 End -}[StructLayout(LayoutKind.Sequential)]public struct SHFILEINFO{public IntPtr hIcon;public IntPtr iIcon;public uint dwAttributes;[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]public string szDisplayName;[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]public string szTypeName;}public enum SHGFI{SHGFI_ICON = 0x100,SHGFI_LARGEICON = 0x0,SHGFI_USEFILEATTRIBUTES = 0x10}
}

应用示例:

        /// <summary> 图片路径 </summary>public Icon ImagePath{get { return IconHelper.Instance.GetSystemInfoIcon(FilePath); }}


这篇关于封装:Windows系统文件图标的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005057

相关文章

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

Windows自动化Python pyautogui RPA操作实现

《Windows自动化PythonpyautoguiRPA操作实现》本文详细介绍了使用Python的pyautogui库进行Windows自动化操作的实现方法,文中通过示例代码介绍的非常详细,对大... 目录依赖包睡眠:鼠标事件:杀死进程:获取所有窗口的名称:显示窗口:根据图片找元素:输入文字:打开应用:依

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

windows端python版本管理工具pyenv-win安装使用

《windows端python版本管理工具pyenv-win安装使用》:本文主要介绍如何通过git方式下载和配置pyenv-win,包括下载、克隆仓库、配置环境变量等步骤,同时还详细介绍了如何使用... 目录pyenv-win 下载配置环境变量使用 pyenv-win 管理 python 版本一、安装 和

Python使用pysmb库访问Windows共享文件夹的详细教程

《Python使用pysmb库访问Windows共享文件夹的详细教程》本教程旨在帮助您使用pysmb库,通过SMB(ServerMessageBlock)协议,轻松连接到Windows共享文件夹,并列... 目录前置条件步骤一:导入必要的模块步骤二:配置连接参数步骤三:实例化SMB连接对象并尝试连接步骤四:

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

JavaSE——封装、继承和多态

1. 封装 1.1 概念      面向对象程序三大特性:封装、继承、多态 。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说就是套壳屏蔽细节 。     比如:对于电脑这样一个复杂的设备,提供给用户的就只是:开关机、通过键盘输入,显示器, USB 插孔等,让用户来和计算机进行交互,完成日常事务。但实际上:电脑真正工作的却是CPU 、显卡、内存等一些硬件元件。

Windows如何添加右键新建菜单

Windows如何添加右键新建菜单 文章目录 Windows如何添加右键新建菜单实验环境缘起以新建`.md`文件为例第一步第二步第三步 总结 实验环境 Windows7 缘起 因为我习惯用 Markdown 格式写文本,每次新建一个.txt后都要手动修改为.md,真的麻烦。如何在右键新建菜单中添加.md选项呢? 网上有很多方法,这些方法我都尝试了,要么太麻烦,要么不凑效

Windows下Nginx的安装及开机启动

1、将nginx-1.16.1.zip解压拷贝至D:\web\nginx目录下。 2、启动Nginx,两种方法: (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。 (2)打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可。 3、检查nginx是否启动成功。 直接在浏览器地址栏输入网址 http://lo