FileIcon
来源:互联网 发布:送巧克力知乎 编辑:程序博客网 时间:2024/06/06 08:30
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Drawing;
namespace DropDrapFileSimple
{
class FileIcon
{
/// <summary>
/// Get default icon from file
/// </summary>
/// <param name="fileName">File name
/// </param>
/// <param name="largeIcon">Large icon or not</param>
/// <returns>default icon</returns>
public static Icon GetFileIcon(string fileName, bool largeIcon)
{
SHFILEINFO info = new SHFILEINFO(true);
int cbFileInfo = Marshal.SizeOf(info);
SHGFI flags;
if (largeIcon)
flags = SHGFI.Icon | SHGFI.LargeIcon | SHGFI.UseFileAttributes;
else
flags = SHGFI.Icon | SHGFI.SmallIcon | SHGFI.UseFileAttributes;
SHGetFileInfo(fileName, 256, out info, (uint)cbFileInfo, flags);
return Icon.FromHandle(info.hIcon);
}
[DllImport("Shell32.dll")]
private static extern int SHGetFileInfo
(
string pszPath,
uint dwFileAttributes,
out SHFILEINFO psfi,
uint cbfileInfo,
SHGFI uFlags
);
[StructLayout(LayoutKind.Sequential)]
private struct SHFILEINFO
{
public SHFILEINFO(bool b)
{
hIcon = IntPtr.Zero; iIcon = 0; dwAttributes = 0; szDisplayName = ""; szTypeName = "";
}
public IntPtr hIcon;
public int iIcon;
public uint dwAttributes;
[MarshalAs(UnmanagedType.LPStr, SizeConst = 260)]
public string szDisplayName;
[MarshalAs(UnmanagedType.LPStr, SizeConst = 80)]
public string szTypeName;
};
private enum SHGFI
{
SmallIcon = 0x00000001,
LargeIcon = 0x00000000,
Icon = 0x00000100,
DisplayName = 0x00000200,
Typename = 0x00000400,
SysIconIndex = 0x00004000,
UseFileAttributes = 0x00000010
}
}
}
- FileIcon
- <Qt>fileIcon与windowIcon的区别
- LINUX修炼之路
- C++学习 (3)--多重继承类对象的构造函数参数的传递方法
- oracle临时表的用法总结
- NSString和NSMutableString常用方法+NSArray常用代码
- platform_driver_register(struct platform_driver *drv)注册后如何找到驱动匹配的设备
- FileIcon
- 羌笛声声胡笳怨,此心长寄天涯远
- cocos2d-x与ios内存管理分析(在游戏中减少内存压力)
- IconImageProvider
- 3pcc
- poj 3335 Rotating Scoreboard(多边形的核存在性)
- Ubuntu 12.04 LTS下访问Windows域共享
- ListView用法
- 回溯算法