代码语言
.
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
】
根据文件名或文件扩展名获取文件的默认图标
作者:
Dezai.CN
/ 发布于
2012/3/22
/
606
有时候我们需要根据不同的文件扩展名显示不同的图标,比如用C#做一个资源管理器。在C#中可以使用 Icon icon = System.Drawing.Icon.ExtractAssociatedIcon(fileFullName) 来得到指定文件图标。但是Icon.ExtractAssociatedIcon 只能获取大图标,要获取小图标还是要使用 API
<div><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);"> System; </span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);"> System.Runtime.InteropServices; </span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);"> System.Drawing; </span><span style="color: rgb(0, 0, 255);">namespace</span><span style="color: rgb(0, 0, 0);"> MyNamespace { </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> FileIcon { </span><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);"><summary></span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> 获取文件的默认图标 </span><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);"></summary></span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);"><param name="fileName"></span><span style="color: rgb(0, 128, 0);">文件名。 </span><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> 可以只是文件名,甚至只是文件的扩展名(.*); </span><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> 如果想获得.ICO文件所表示的图标,则必须是文件的完整路径。 </span><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);"></param></span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);"><param name="largeIcon"></span><span style="color: rgb(0, 128, 0);">是否大图标</span><span style="color: rgb(128, 128, 128);"></param></span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);"><returns></span><span style="color: rgb(0, 128, 0);">文件的默认图标</span><span style="color: rgb(128, 128, 128);"></returns></span><span style="color: rgb(128, 128, 128);"> </span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);"> Icon GetFileIcon(</span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);"> fileName, </span><span style="color: rgb(0, 0, 255);">bool</span><span style="color: rgb(0, 0, 0);"> largeIcon) { SHFILEINFO info </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> SHFILEINFO(</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">); </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> cbFileInfo </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> Marshal.SizeOf(info); SHGFI flags; </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (largeIcon) flags </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> SHGFI.Icon </span><span style="color: rgb(0, 0, 0);">|</span><span style="color: rgb(0, 0, 0);"> SHGFI.LargeIcon </span><span style="color: rgb(0, 0, 0);">|</span><span style="color: rgb(0, 0, 0);"> SHGFI.UseFileAttributes; </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"> flags </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> SHGFI.Icon </span><span style="color: rgb(0, 0, 0);">|</span><span style="color: rgb(0, 0, 0);"> SHGFI.SmallIcon </span><span style="color: rgb(0, 0, 0);">|</span><span style="color: rgb(0, 0, 0);"> SHGFI.UseFileAttributes; SHGetFileInfo(fileName, </span><span style="color: rgb(0, 0, 0);">256</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 255);">out</span><span style="color: rgb(0, 0, 0);"> info, (</span><span style="color: rgb(0, 0, 255);">uint</span><span style="color: rgb(0, 0, 0);">)cbFileInfo, flags); </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> Icon.FromHandle(info.hIcon); } [DllImport(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Shell32.dll</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)] </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">extern</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> SHGetFileInfo ( </span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);"> pszPath, </span><span style="color: rgb(0, 0, 255);">uint</span><span style="color: rgb(0, 0, 0);"> dwFileAttributes, </span><span style="color: rgb(0, 0, 255);">out</span><span style="color: rgb(0, 0, 0);"> SHFILEINFO psfi, </span><span style="color: rgb(0, 0, 255);">uint</span><span style="color: rgb(0, 0, 0);"> cbfileInfo, SHGFI uFlags ); [StructLayout(LayoutKind.Sequential)] </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">struct</span><span style="color: rgb(0, 0, 0);"> SHFILEINFO { </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> SHFILEINFO(</span><span style="color: rgb(0, 0, 255);">bool</span><span style="color: rgb(0, 0, 0);"> b) { hIcon </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> IntPtr.Zero; iIcon </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">; dwAttributes </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">; szDisplayName </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">; szTypeName </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">; } </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> IntPtr hIcon; </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> iIcon; </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">uint</span><span style="color: rgb(0, 0, 0);"> dwAttributes; [MarshalAs(UnmanagedType.LPStr, SizeConst </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">260</span><span style="color: rgb(0, 0, 0);">)] </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);"> szDisplayName; [MarshalAs(UnmanagedType.LPStr, SizeConst </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">80</span><span style="color: rgb(0, 0, 0);">)] </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);"> szTypeName; }; </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">enum</span><span style="color: rgb(0, 0, 0);"> SHGFI { SmallIcon </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0x00000001</span><span style="color: rgb(0, 0, 0);">, LargeIcon </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0x00000000</span><span style="color: rgb(0, 0, 0);">, Icon </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0x00000100</span><span style="color: rgb(0, 0, 0);">, DisplayName </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0x00000200</span><span style="color: rgb(0, 0, 0);">, Typename </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0x00000400</span><span style="color: rgb(0, 0, 0);">, SysIconIndex </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0x00004000</span><span style="color: rgb(0, 0, 0);">, UseFileAttributes </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0x00000010</span><span style="color: rgb(0, 0, 0);"> } } }</span></div>
试试其它关键字
获取文件的默认图标
同语言下
.
文件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转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3