SHGetFileInfo是一个相当实用的Windows API函数。

// 【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 = {}; cout<<"file name = "<<file_name<<endl; // type name
SHGetFileInfo(file_name, , &sfi, sizeof(sfi), SHGFI_USEFILEATTRIBUTES | SHGFI_TYPENAME);
cout<<"type name = "<<sfi.szTypeName<<endl; // display name
SHGetFileInfo(file_name, , &sfi, sizeof(sfi), SHGFI_USEFILEATTRIBUTES | SHGFI_DISPLAYNAME);
cout<<"display name = "<<sfi.szDisplayName<<endl; // attribute
SHGetFileInfo(file_name, , &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, , &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, , &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 ;
}

c++ 获取文件图标,类型名称,属性 SHGetFileInfo的更多相关文章

  1. Qt之根据扩展名获取文件图标、类型

    简述 在C++根据扩展名获取文件图标.类型一节中我们分享了如何根据扩展名来获取对应的文件图标.类型,下面.我们在Qt中使用它. 简述 示例 效果 源码 更多参考 示例 如下,我们根据扩展名来获取对应的 ...

  2. C++根据扩展名获取文件图标、类型

    简述 在Windows系统中,根据扩展名来区分文件类型,比如:.txt(文本文件)..exe(可执行程序).*.zip(压缩文件),下面,我们来根据扩展名来获取对应的文件图标.类型. 简述 源码 源码 ...

  3. Qt之QFileIconProvider(根据扩展名获取文件图标、类型)

    简述 在Qt之QFileIconProvider一节中已经讲解关于如何获取文件图标与类型.但只仍针对本地已存在的文件,此节,我们主要运用前面分享的内容,讲述如何通过任意后缀或本地不存在的文件来获取相关 ...

  4. C# 获取文件图标

    今天突然想到一个问题,如何去获取一个文件的关联图标呢?于是就上网搜索了一下.现总结如下: 首先明确问题:获取一个文件的关联图标或者是某个类型文件的显示图标. 在网上搜了一圈,发现方法还是比较多的,但是 ...

  5. php获取文件mime类型Fileinfo等方法

    前几天写到使用wordpress xmlrpc api远程发布文章,如果本地服务器的文章库里某一篇待发表的wordpress文章包含图片文件时,就会使用到WordPress上传文件的API metaW ...

  6. php 获取文件mime类型的方法

    php 获取文件mime类型的方法 使用fileinfo需要安装php_fileinfo扩展. 如已安装可以在extension_dir目录下找到php_fileinfo.dll(windows),f ...

  7. winform 获取文件夹的名称 分类: WinForm 2014-08-04 15:50 242人阅读 评论(0) 收藏

    目的:获取项目路径下所有文件夹的名称,并绑定到Combobox控件下: 显示要求:此文件夹名称和他的子文件名称的集合: Combobox控件名称:cmbFile 图示: 代码实现: //项目路径 st ...

  8. delphi 获取文件图标

    {根据文件的名字得到此文件在系统中对应大小的图标large=true(64*64) false(32*32)}procedure GetFileIcon(TypeName: Widestring; I ...

  9. php 获取文件加的名称

    /*** * 根本平台类型获取文件名 */ function showGetFileName($type,$url){ #判断平台类型 if($type=='android'||$type=='ios ...

随机推荐

  1. python 收集测试日志--格式

    Python的logging模块提供了通用的日志系统,这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SMTP,Socket等,甚至可以自己实现方式记录 ...

  2. Alex and Number

    Alex and Number 时间限制: 1 Sec  内存限制: 128 MB提交: 69  解决: 12[提交][状态] 题目描述 Alex love Number theory. Today ...

  3. 前端每日实战:46# 视频演示如何用纯 CSS 创作一个在容器中反弹的小球

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/jKVbyE 可交互视频教程 此视频 ...

  4. QString的arg方法

    第一个参数是要填充的数字,第二个参数为最小宽度,第三个参数为进制,第四个参数为当原始数字长度不足最小宽度时用于填充的字符,如 QString name=QString("R%1C%2&quo ...

  5. Html5 学习笔记 【PC固定布局】 实战6 咨询页面

    最终效果: Html页面代码: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta char ...

  6. 关于函数lower_bound()如何使用的问题

    这个函数是c++ STL里自带的函数,应该需要引用头文件#include<iostream> 功能:在一个有序的序列中查找可以将value(一个变量)放在队列里面而不会引起序列长度变化,单 ...

  7. 继承Process类,run函数的简单使用

    #定义一个类 继承Process类 from multiprocessing import Process import os import time class Download(Process): ...

  8. c#生成html静态文件时出现空白行,怎么去掉utf-8中的bom

    public static void UTF8RemoveBOM(string filepath) { UTF8RemoveBOM(filepath, filepath); }   public st ...

  9. C++中逗号操作符重载的分析

    1,关注逗号操作符重载后带来的变化: 2,逗号操作符: 1,逗号操作符(,)可以构成都好表达式:exp1, exp2, exp3, ..., expN 1,逗号表达式用于将多个表达式连接为一个表达式: ...

  10. luoguP1083 借教室(题解)(我用的线段树)

    luoguP1083 借教室 题目 #include<cstdio> #include<iostream> #include<cmath> #include< ...