【MoreWindows工作笔记4】 获取文件图标,类型名称,属性 SHGetFileInfo

原创 2013年11月18日 13:52:50

工作后比较忙,没大块的时间来酝酿博客的写作,所以随时记点笔记,一来方便自己查阅,二来也督促自己学习和总结。如果能对大家有所帮助,就更加开心了大笑

 

 SHGetFileInfo是一个相当实用的Windows API函数。在Windows资源管理器中就要使用它。如图中的第3列显示的就是文件的类型名称

下面来看看这个函数的详细用法:

// 【MoreWindows工作笔记4】 获取文件图标,类型名称,属性 SHGetFileInfo
#include <Windows.h>
#include <iostream>
using namespace std;
int main()
{
  printf("   【MoreWindows工作笔记4】 获取文件图标,类型名称,属性 SHGetFileInfo\n");    
  printf(" - http://blog.csdn.net/morewindows/article/details/16358681 -\n");    
  printf(" -- By MoreWindows( http://blog.csdn.net/MoreWindows ) --\n\n");  

  CoInitialize(NULL);
  char file_name[] = "C:\\MoreWindows.mp3";
  SHFILEINFO sfi = {0};
  
  cout<<"file name = "<<file_name<<endl;

  // type name
  SHGetFileInfo(file_name, 0, &sfi, sizeof(sfi), SHGFI_USEFILEATTRIBUTES | SHGFI_TYPENAME);
  cout<<"type name = "<<sfi.szTypeName<<endl;

  // display name
  SHGetFileInfo(file_name, 0, &sfi, sizeof(sfi), SHGFI_USEFILEATTRIBUTES | SHGFI_DISPLAYNAME);
  cout<<"display name = "<<sfi.szDisplayName<<endl;

  // attribute
  SHGetFileInfo(file_name, 0, &sfi, sizeof(sfi), SHGFI_USEFILEATTRIBUTES | SHGFI_ATTRIBUTES);
  cout<<"attribute = "<<hex<<sfi.dwAttributes<<endl;  // 使用IShellFolder::GetAttributesOf函数解析
  
  // HICON
  // 除了SHGFI_ICON之外还有SHGFI_LARGEICON(大图标), SHGFI_SMALLICON(小图标)
  SHGetFileInfo(file_name, 0, &sfi, sizeof(sfi), SHGFI_USEFILEATTRIBUTES | SHGFI_ICON);
  cout<<"HICON = 0x"<<hex<<sfi.hIcon<<endl;  // 使用IShellFolder::GetAttributesOf函数解析
  DestroyIcon(sfi.hIcon);

  // HICON system index
  SHGetFileInfo(file_name, 0, &sfi, sizeof(sfi), SHGFI_USEFILEATTRIBUTES | SHGFI_SYSICONINDEX);
  cout<<"HICON system index = "<<sfi.iIcon<<endl;  // 使用IShellFolder::GetAttributesOf函数解析

  CoUninitialize();

  // SHGFI_USEFILEATTRIBUTES 的说明
  // Indicates that the function should not attempt to access the file specified by pszPath. 
  // Rather, it should act as if the file specified by pszPath exists with the file attributes passed in dwFileAttributes.
  // This flag cannot be combined with the SHGFI_ATTRIBUTES, SHGFI_EXETYPE, or SHGFI_PIDL flags.
  return 0;
}

运行结果如图所示:

.mp3文件:

.txt文件

.docx文件

 

 

地址:http://blog.csdn.net/morewindows/article/details/16358681 转载请标明出处,谢谢。

欢迎关注微博:http://weibo.com/MoreWindows  

 


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

SHGetFileInfo函数详解

SHGetFileInfo函数WINSHELLAPI DWORD WINAPI SHGetFileInfo( LPCTSTR pszPath, DWORD dwFileAttributes...

文件的本质--SHGetFileInfo()

本文从一下几个方法进行介绍:  SHGetFileInfo的定义 SHGetFileInfo()函数的工作原理 SHGetFileInfo()函数的返回值 SHGetFileInfo()函数...

Windows API——SHGetFileInfo——获取文件信息

Windows API——SHGetFileInfo——获取文件信息 本文从一下几个方法进行介绍:    SHGetFileInfo的定义 SHGetFileInfo()函数的工作原理 SHG...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

SHGetFileInfo 显示文件类型图标

需要显示远程目录下文件跟文件夹的图标,但是软件并不支持直接获取远程目录下的图标,这时候就需要读取本机对应的目录图标和对应类型文件图标。 初始化的时候。需要将Imagelist设置给ListCtrl控...
  • wowbell
  • wowbell
  • 2011年12月26日 17:53
  • 3769

批量删除VC,VS临时文件

微博http://weibo.com/MoreWindows已开通,欢迎关注。《VC6.0及VS2008使用技巧》系列文章地址:http://blog.csdn.net/morewindows/art...

驱动拦截NT的API实现隐藏木马客户端

 目前NT下有很多种隐藏文件和目录的方法,其中最简单的一种是给文件和文件夹加上系统属性和隐藏属性,操作系统就会不在显示了,而且查找也找不到了,但是这种方法一点都不彻底,没有可用性!下面我们来介绍用NT...

SHGetFileInfo 获得文件类型图标

Windows编程:Shell 编程 第四章 SHGetFileInfo() 以前,所有文件和目录都有一个确定的属性集:时间,日期,尺寸,以及表示‘只读的’,‘隐藏的,‘存档的’,或‘系统的’状...

【MoreWindows工作笔记10】OleGetClipboard 访问剪切板上的文件信息

【MoreWindows工作笔记10】OleGetClipboard 访问剪切板上的文件信息 当我们复制文件时,会将文件的信息存储在剪贴板中,这个文件信息并不是文件路径的字符串。而是HDROP类型,本...

获取给定路径的图标,演示SHGetFileInfo用法

基于上次那个SHBrowseForFolder用法的演示代码 建立的仍然是Win32 命令行的工程,所以入口点为main(),需要手动获取HINSTANCE结构。程序在WINXP+VS2005测试通过...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【MoreWindows工作笔记4】 获取文件图标,类型名称,属性 SHGetFileInfo
举报原因:
原因补充:

(最多只允许输入30个字)