- 浏览: 53167 次
- 性别:
- 来自: 长沙
最新评论
-
laiyuan:
规范太差了吧,都没注释,完全没达到需要,输出的levelSet ...
字符串多模式匹配算法:关键字过滤技术 -
supercode:
ACCP?
ASP.NET加上水印 -
huqing:
水印 是什么 不懂
ASP.NET加上水印 -
leiwuluan:
.NET截取指定长度汉字超出部分以...代替 -
leiwuluan:
.NET截取指定长度汉字超出部分以...代替
using System; using System.IO; using System.Drawing; using Microsoft.Win32; using System.Runtime.InteropServices; namespace GetIconDemo { /// <summary> /// 提供从操作系统读取图标的方法 /// </summary> public class GetSystemIcon { /// <summary> /// 依据文件名读取图标,若指定文件不存在,则返回空值。 /// </summary> /// <param name="fileName"></param> /// <returns></returns> public static Icon GetIconByFileName(string fileName) { if (fileName == null || fileName.Equals(string.Empty)) return null; if (!File.Exists(fileName)) return null; SHFILEINFO shinfo = new SHFILEINFO(); //Use this to get the small Icon Win32.SHGetFileInfo(fileName, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), Win32.SHGFI_ICON | Win32.SHGFI_SMALLICON); //The icon is returned in the hIcon member of the shinfo struct System.Drawing.Icon myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon); return myIcon; } /// <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; } } [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; }; /// <summary> /// 定义调用的API方法 /// </summary> class Win32 { public const uint SHGFI_ICON = 0x100; public const uint SHGFI_LARGEICON = 0x0; // 'Large icon public const uint SHGFI_SMALLICON = 0x1; // 'Small icon [DllImport("shell32.dll")] public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags); [DllImport("shell32.dll")] public static extern uint ExtractIconEx(string lpszFile, int nIconIndex, int[] phiconLarge, int[] phiconSmall, uint nIcons); } } 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/snlei/archive/2009/03/08/3970345.aspx
发表评论
-
常用表单正则表达式
2010-06-23 16:53 872常用表单正则表达式,仅 ... -
asp.net 页面中添加普通视频的几种方式
2010-06-18 11:29 1004第一种 是通过调用window media player进行 ... -
关于OpenFileDialog的使用
2010-03-11 18:37 1750为了方便同事在日常工作中很快速生成大量数据, 我做 ... -
ASP.NET页面刷新的实现方法总结
2010-02-26 15:44 1307先看看ASP.NET页面刷新的实现方法: 第一: pri ... -
getElementById 与 getElementsByTagName的区别【Javascript】
2010-01-30 14:45 1767在javascript中,操作HTML DOM时,需要经常用到 ... -
javascript实现垂直无缝滚动详解
2010-01-30 14:43 1508无缝滚动可以在flash中 ... -
javascript无缝水平滚动实例
2010-01-30 14:42 2579首先看源代码: <html> <head ... -
分页查询的SQL存储过程
2010-01-29 11:40 630select top 5 * from student ... -
C# Checklistbox用法
2010-01-26 17:54 32391、添加项: checkedListBox1.I ... -
C#实现组合键
2010-01-26 17:25 1948// Ctrl + H if ((Control.Modi ... -
JS实现可拖拽的菜单
2009-11-19 16:56 917Html代码 <html> ... -
认识C#中的委托和事件
2009-11-10 19:53 750【简 介】委托 和 事件在 .Net Framework中的应 ... -
VS2005快捷键大全
2009-11-10 18:25 1701CTRL + SHIFT + B生成解决方案 CTRL + F ... -
CSS+JQuery实现的性感漂亮导航
2009-11-10 18:06 14171.demo.html HTML代码: & ... -
C# WinForm 中批量清除文本框
2009-11-10 16:47 2473/// <summary> ... -
C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
2009-10-13 15:41 10761.C#类和接口的区别接口 ... -
HTML中小meta的大作用
2009-10-13 15:31 627以前一直不知道HTML中的 ... -
javaScript日期时间
2009-09-22 14:09 907JavaScript脚本如下: <script lan ... -
ASP.NET获取客户端IP地址、系统版本、浏览器版本
2009-09-22 13:18 3004using System; using System.Dat ... -
C#MD5加密解密【转载】
2009-08-24 13:59 5501using System.Security.Cryptogra ...
相关推荐
C#读取文件图标,可用于编写文件管理器、资源浏览器等。
winform C# 根据文件扩展名(文件类型)提取图标icon,并保存成透明背景的png图片的源代码
C# 提取并显示文件包含的图标C# 提取并显示文件包含的图标C# 提取并显示文件包含的图标C# 提取并显示文件包含的图标
C#解压ipa并读取应用信息,可读取名称,版本等几十个信息
c#根据文件类型获取相关类型图标的方法代码,需要的朋友可以参考一下
当拿到一个app.ipa包时,想用程序读取包中的资源文件,这时是无法直接将app图标在浏览器被正确解析的,原因是苹果在打包app时,对这些图标文件做了优化处理,crush掉了png图标包含的一些信息,这时我们需要decrush...
Gerber文件读取及编辑工具 SMT行业,半导体行业中,经常用到gerber文件作为图标文件,用于钢网,pcb版等相关产品的自动检测, 此软件为gerber读取/编辑软件,可导出mdb格式文件
从数据库读取数据,插入到下拉列表框中,实现下拉列表框的数据的填充
winForm写的获取文件的系统图标源代码
目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件、指定文件夹下面的所有内容copy到目标文件夹下面、指定文件夹下面的所有内容Detele、读取文本...
自己写的一个例子,读取ico、exe、dll文件的图标,就像XP里为文件夹更改图标的那个窗口。供讨论。
C# QRCode 生成二维码demo 没有中间图标和有中间logo图标都有
《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...
内含完整DEMO,完整操作步骤说明文档,需要先按装eDrawings,在生成两个DLL,程序在添加改两个DLL。
《C#开发实例大全(基础卷)》筛选、汇集了C#开发从基础知识到高级应用各个层面约600个实例及源代码,每个实例都按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析解读。全书分6篇共25章,主要...
实例035 从字符串中分离文件路径、文件名及扩展名 实例036 对字符串进行加密与解密 实例037 开发一个进制转换器 实例038 将字符串的每个字符进行颠倒输出 实例039 根据标点符号对字符串进行分行 实例040 将汉字转换...
显示动画光标(C#源代码编写)显示动画光标,当运行程序时,光标将变成动画光标 VisualStudio2008创建[DllImport("user32")] private static extern IntPtr SetCursor(IntPtr hCursor); [DllImport("user32")] ...