前段时间写了一个C#的文件更名工具,在写文件浏览时,需要获得文件的图标和文件类型。.NET框架中并没有现成的方法,只好调用API函数。
以下是调用API的类,取名为Win32








































下面是调用方法的代码:























把取得的文件图标和文件类型描述,放到一个以Detail方式显示的ListView中,FileIcons是一个和listView1的SmallImageList相关联的ImageList。
SHGetFileInfo的 uFlags参数是由一些16进制常数来表示的,需要重叠时,只要位或('|')便可。可以直接用16进制数,也可以在WIN32类中自定义一个常数枚举。
uFlags常数:
SHGFI_ICON = 0x000000100,
SHGFI_DISPLAYNAME = 0x000000200,
SHGFI_TYPENAME = 0x000000400,
SHGFI_ATTRIBUTES = 0x000000800,
SHGFI_ICONLOCATION = 0x000001000,
SHGFI_EXETYPE = 0x000002000,
SHGFI_SYSICONINDEX = 0x000004000,
SHGFI_LINKOVERLAY = 0x000008000,
SHGFI_SELECTED = 0x000010000,
SHGFI_ATTR_SPECIFIED = 0x000020000,
SHGFI_LARGEICON = 0x000000000,
SHGFI_SMALLICON = 0x000000001,
SHGFI_OPENICON = 0x000000002,
SHGFI_SHELLICONSIZE = 0x000000004,
SHGFI_PIDL = 0x000000008,
SHGFI_USEFILEATTRIBUTES = 0x000000010