//头文件
/// @class CSHGetFileInfo
/// SHGetFileInfo的包裹类
class CSHGetFileInfo
{public:CSHGetFileInfo();virtual ~CSHGetFileInfo();/// 获取系统图像列表/// @param[in] bSmallIcon ture则为小图标,false则为大图标HIMAGELIST  GetSystemImageListHandle( BOOL bSmallIcon );/// 获取系统图片列表的文件图片索引/// @param[in] strFileName 文件名/// @param[in] bSmallIcon ture则为小图标,false则为大图标int GetFileIconIndex( CString strFileName, BOOL bSmallIcon);/// 获取系统图片列表的文件夹图片索引/// @param[in] bSmallIconint GetDirIconIndex(BOOL bSmallIcon);/// 获取文件的icon的句柄/// @param[in] strFileName 文件名/// @param[in] bSmallIcon ture则为小图标,false则为大图标HICON GetFileIconHandle(CString strFileName, BOOL bSmallIcon);/// 获取文件夹的icon的句柄/// @param[in] bSmallIcon ture则为小图标,false则为大图标HICON GetFolderIconHandle(BOOL bSmallIcon );/// 获取文件类型/// @param[in] strFileName 文件名CString GetFileType(CString strFileName);};//cpp文件
CSHGetFileInfo::CSHGetFileInfo()
{}CSHGetFileInfo::~CSHGetFileInfo()
{}HIMAGELIST  CSHGetFileInfo::GetSystemImageListHandle( BOOL bSmallIcon )
{HIMAGELIST  hSystemImageList; SHFILEINFO    ssfi; if (bSmallIcon){hSystemImageList = (HIMAGELIST)SHGetFileInfo( (LPCTSTR)_T("c:\\"), 0, &ssfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON); }else{hSystemImageList = (HIMAGELIST)SHGetFileInfo( (LPCTSTR)_T("c:\\"), 0, &ssfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_LARGEICON); }return hSystemImageList;
}int CSHGetFileInfo::GetFileIconIndex( CString strFileName, BOOL bSmallIcon )
{SHFILEINFO    sfi;if (bSmallIcon){SHGetFileInfo((LPCTSTR)strFileName, FILE_ATTRIBUTE_NORMAL,&sfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);}else{SHGetFileInfo((LPCTSTR)strFileName, FILE_ATTRIBUTE_NORMAL,&sfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES);}return sfi.iIcon;}int CSHGetFileInfo::GetDirIconIndex(BOOL bSmallIcon )
{SHFILEINFO    sfi;if (bSmallIcon){SHGetFileInfo((LPCTSTR)"Doesn't matter", FILE_ATTRIBUTE_DIRECTORY,&sfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);}else{SHGetFileInfo((LPCTSTR)"Doesn't matter", FILE_ATTRIBUTE_DIRECTORY,&sfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES);}return sfi.iIcon;}
HICON CSHGetFileInfo::GetFileIconHandle(CString strFileName, BOOL bSmallIcon)
{SHFILEINFO    sfi;if (bSmallIcon){SHGetFileInfo((LPCTSTR)strFileName, FILE_ATTRIBUTE_NORMAL,&sfi, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);}else{SHGetFileInfo((LPCTSTR)strFileName, FILE_ATTRIBUTE_NORMAL,&sfi, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES);}return sfi.hIcon;}
HICON CSHGetFileInfo::GetFolderIconHandle(BOOL bSmallIcon )
{SHFILEINFO    sfi;if (bSmallIcon){SHGetFileInfo((LPCTSTR)"Doesn't matter", FILE_ATTRIBUTE_DIRECTORY,&sfi, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);}else{SHGetFileInfo((LPCTSTR)"Does not matter", FILE_ATTRIBUTE_DIRECTORY,&sfi, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES);}return sfi.hIcon;
}CString CSHGetFileInfo::GetFileType(CString strFileName)
{SHFILEINFO    sfi;SHGetFileInfo((LPCTSTR)strFileName, FILE_ATTRIBUTE_NORMAL,&sfi, sizeof(SHFILEINFO), SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES);return sfi.szTypeName;
}

SHGetFileInfo()获取系统图标方法相关推荐

  1. C++获取系统图标方法

    系统图像列表(有时亦被称作 Shell 图标缓存)是一个由 Windows Shell 维护的图标资源,资源管理器和其它应用程序使用这个列表来显示系统对象.程序和文件类型的图标.其实就是一个简单的 H ...

  2. Qt中如何获取系统图标

    Qt中获取系统图标.类型是通过QFileIconProvider来实现的,具体如下: 一.Qt获取系统文件图标 1.获取文件夹图标 QFileIconProvider icon_provider; Q ...

  3. 根据文件扩展名获取系统图标

    1 /// <summary> 2 /// 根据文件后缀名获取系统图标. 3 /// </summary> 4 /// <param name="extensi ...

  4. vb.net 获取系统图标_【系统更新V4】优麒麟 20.04 LTS持续完善!优化高清屏支持,上架6款新应用!...

    自优麒麟 20.04 LTS 发布后,官方一直积极从各个渠道汇总大家的反馈建议,并针对存在的问题进行记录和处理.对于系统使用过程中遇到的任何问题或者建议,欢迎大家通过系统中用户反馈程序.微信交流群.Q ...

  5. vb.net 获取系统图标_win10美化:全面更改系统图标

    昨天发了一个修改电脑系统字体的工具之后,不少小伙伴都觉得小帮使用的系统图标非常好看.今天我们就来聊聊如何一键更改win10系统图标. iConadams 700 icons iPack 这个图标包一共 ...

  6. vb.net 获取系统图标_优麒麟19.10.1正式发布:控制面板新增图标主题与字体高级设置...

    今日,Linux开源桌面操作系统优麒麟宣布推出19.10.1版本,内核升级到5.3.0.19.22,火狐浏览器升级到70.0版本,主要修复了用户通过论坛.微信.官网等平台反馈的问题,新增了控制面板中图 ...

  7. STM32F407获取系统时钟方法

    获取当前时钟频率方法(库函数) RCC_ClocksTypeDef是一个结构体,定义一个全局变量: RCC_ClocksTypeDef Get_RCC_Clocks; RCC_ClocksTypeDe ...

  8. vb.net 获取系统图标_「快捷指令」桌面图标任意摆放

    在往期文章中已经为大家分享了桌面图标任意摆放的方法,通过快捷指令进行设置,但只能使用纯色壁纸,部分小伙伴并不是很喜欢,希望可以有不受壁纸限制的方法. 今天为大家更新快捷指令规则文件,桌面图标任意摆放, ...

  9. vb.net 获取系统图标_微商城和小程序商城图标8个设计注意事项

    我们每天都在设计图标,并且保持这样的状态超过15年.身为设计师,想必你已经阅读过很多关于图标设计的文章,但是今天的文章不一样. 今天的文章不会花费很长时间来单独介绍某一个图标的设计.而是设计任何一套图 ...

  10. IO流文件的相对路径及获取系统路径方法

    本机测试的时候经常没有问题,但是一上服务器就出现无法读取文件的事情可以通过class反射的方法获取文件的系统路径,免得出现异常. 以下是一个测试的demo,通过注释的方式说明了一下问题与解决方案. p ...

最新文章

  1. Java提高班(一)Thread详解
  2. neo4j 显示名字_Neo4j:绘制“我的名字是……我在工作”图
  3. 基于C语言、线性表的 二、八、十、十六进制转换 及 加运算、左右移位运算、乘法运算 的科学计算器设计
  4. WEB自定义控件小记
  5. Kafka 分布式消息系统 基础概念剖析
  6. IDEA拉取GitLab代码出现Git Pull failed remote: HTTP Basic: Access denied
  7. ActivityGroup的简单用法
  8. java hostwrite_Java IOUtils.write方法代碼示例
  9. 用C#将PDF转换为Doc
  10. android 改机型玩王者,安卓手机改机型华为nova 8 Pro体验《王者荣耀》90帧超高帧率模式...
  11. 集合框架学习笔记(下)
  12. JAVA点餐系统计算机毕业设计Mybatis+系统+数据库+调试部署
  13. 皮特测评:蓝牙耳机哪个品牌最好?300元内最好的蓝牙耳机
  14. 新计算机的windows要不要不断更新,win10一直出现无法完成更新正在撤销更改请不要关闭你的计算机,怎么办?...
  15. elasticsearch删除过期数据
  16. 【复盘】记录生产环境问题,因没有及时合并maser
  17. linux命令行 随机排列,有趣的Linux命令行:随机输出唐诗宋词
  18. 提升个人效率减少焦虑——GTD法则
  19. 【相机】工业相机必看的六大参数
  20. 计算机学生英语面试自我介绍ppt,三星面试英语自我介绍.ppt

热门文章

  1. bert4keras使用笔记
  2. C语言程序设计:用strcpy比较数组(银行卡密码程序设计),strcpy(复制数组内容)和getchar()(敲键盘字符,统计不想要的字符的个数)...
  3. 支持英文/汉字/emoji长度计算的输入框实现
  4. c语言输出汽车仪表档位显示
  5. SqlServer 安装
  6. 碳热塑性塑料行业调研报告 - 市场现状分析与发展前景预测
  7. .xin域名亮相2017云栖大会·上海峰会(火爆现场)
  8. java基础(环境,java平台,jvm,异常,面向对象,数组,IO流,容器等等)
  9. uniapp引入echarts日历图 点击事件
  10. ASPLOS‘23 系统顶会论文 Plugsched :安全、高效的多场景调度器热升级详解