代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
CSharp
】
读取EXE文件图标及读取指定文件类型图标
作者:
奕男
/ 发布于
2015/1/8
/
920
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.IO; using System.Runtime.InteropServices; using Microsoft.Win32; namespace CExplorer { public static class GetSystemIcon { /// <summary> /// 依据文件名读取图标,若指定文件不存在,则返回空值。 /// </summary> /// <param name="fileName">文件路径</param> /// <param name="isLarge">是否返回大图标</param> /// <returns></returns> public static Icon GetIconByFileName(string fileName, bool isLarge = true) { int[] phiconLarge = new int[1]; int[] phiconSmall = new int[1]; //文件名 图标索引 Win32.ExtractIconEx(fileName, 0, phiconLarge, phiconSmall, 1); IntPtr IconHnd = new IntPtr(isLarge ? phiconLarge[0] : phiconSmall[0]); return Icon.FromHandle(IconHnd); } /// <summary> /// 根据文件扩展名(如:.*),返回与之关联的图标。 /// 若不以"."开头则返回文件夹的图标。 /// </summary> /// <param name="fileType">文件扩展名</param> /// <param name="isLarge">是否返回大图标</param> /// <returns></returns> public static Icon GetIconByFileType(string fileType, bool isLarge) { if (fileType == null || fileType.Equals(string.Empty)) return null; RegistryKey regVersion = null; string regFileType = null; string regIconString = null; string systemDirectory = Environment.SystemDirectory + "\\"; if (fileType[0] == '.') { //读系统注册表中文件类型信息 regVersion = Registry.ClassesRoot.OpenSubKey(fileType, true); if (regVersion != null) { regFileType = regVersion.GetValue("") as string; regVersion.Close(); regVersion = Registry.ClassesRoot.OpenSubKey(regFileType + @"\DefaultIcon", true); if (regVersion != null) { regIconString = regVersion.GetValue("") as string; regVersion.Close(); } } if (regIconString == null) { //没有读取到文件类型注册信息,指定为未知文件类型的图标 regIconString = systemDirectory + "shell32.dll,0"; } } else { //直接指定为文件夹图标 regIconString = systemDirectory + "shell32.dll,3"; } string[] fileIcon = regIconString.Split(new char[] { ',' }); if (fileIcon.Length != 2) { //系统注册表中注册的标图不能直接提取,则返回可执行文件的通用图标 fileIcon = new string[] { systemDirectory + "shell32.dll", "2" }; } Icon resultIcon = null; try { //调用API方法读取图标 int[] phiconLarge = new int[1]; int[] phiconSmall = new int[1]; uint count = Win32.ExtractIconEx(fileIcon[0], Int32.Parse(fileIcon[1]), phiconLarge, phiconSmall, 1); IntPtr IconHnd = new IntPtr(isLarge ? phiconLarge[0] : phiconSmall[0]); resultIcon = Icon.FromHandle(IconHnd); } catch { } return resultIcon; } } /// <summary> /// 定义调用的API方法 /// </summary> class Win32 { [DllImport("shell32.dll")] public static extern uint ExtractIconEx(string lpszFile, int nIconIndex, int[] phiconLarge, int[] phiconSmall, uint nIcons); } }
试试其它关键字
EXE文件
文件图标
文件类型图标
图标
同语言下
.
文件IO 操作类库
.
Check图片类型[JPEG(.jpg 、.jpeg),TIF,GIF,BMP,PNG,P
.
机器名和IP取得(IPV4 IPV6)
.
Tiff转换Bitmap
.
linqHelper
.
MadieHelper.cs
.
RegHelper.cs
.
如果关闭一个窗体后激活另一个窗体的事件或方法
.
创建日志通用类
.
串口辅助开发类
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
奕男
贡献的其它代码
(
13
)
.
读取MP4等视频文件的长度
.
实现1-12月份查询统计
.
实现MySQL数据库备份
.
淘宝式的爬虫爬取 带断点续传
.
获取指定路径下的全部文件然后删除
.
生成日历表
.
文件IO
.
模拟PHP的pack和unpack类
.
有向图最小点基(邻接阵形式)
.
自动跳转支付宝和财付通并填表的函数
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3