SHGetFileInfo()获取系统图标方法
//头文件
/// @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()获取系统图标方法相关推荐
- C++获取系统图标方法
系统图像列表(有时亦被称作 Shell 图标缓存)是一个由 Windows Shell 维护的图标资源,资源管理器和其它应用程序使用这个列表来显示系统对象.程序和文件类型的图标.其实就是一个简单的 H ...
- Qt中如何获取系统图标
Qt中获取系统图标.类型是通过QFileIconProvider来实现的,具体如下: 一.Qt获取系统文件图标 1.获取文件夹图标 QFileIconProvider icon_provider; Q ...
- 根据文件扩展名获取系统图标
1 /// <summary> 2 /// 根据文件后缀名获取系统图标. 3 /// </summary> 4 /// <param name="extensi ...
- vb.net 获取系统图标_【系统更新V4】优麒麟 20.04 LTS持续完善!优化高清屏支持,上架6款新应用!...
自优麒麟 20.04 LTS 发布后,官方一直积极从各个渠道汇总大家的反馈建议,并针对存在的问题进行记录和处理.对于系统使用过程中遇到的任何问题或者建议,欢迎大家通过系统中用户反馈程序.微信交流群.Q ...
- vb.net 获取系统图标_win10美化:全面更改系统图标
昨天发了一个修改电脑系统字体的工具之后,不少小伙伴都觉得小帮使用的系统图标非常好看.今天我们就来聊聊如何一键更改win10系统图标. iConadams 700 icons iPack 这个图标包一共 ...
- vb.net 获取系统图标_优麒麟19.10.1正式发布:控制面板新增图标主题与字体高级设置...
今日,Linux开源桌面操作系统优麒麟宣布推出19.10.1版本,内核升级到5.3.0.19.22,火狐浏览器升级到70.0版本,主要修复了用户通过论坛.微信.官网等平台反馈的问题,新增了控制面板中图 ...
- STM32F407获取系统时钟方法
获取当前时钟频率方法(库函数) RCC_ClocksTypeDef是一个结构体,定义一个全局变量: RCC_ClocksTypeDef Get_RCC_Clocks; RCC_ClocksTypeDe ...
- vb.net 获取系统图标_「快捷指令」桌面图标任意摆放
在往期文章中已经为大家分享了桌面图标任意摆放的方法,通过快捷指令进行设置,但只能使用纯色壁纸,部分小伙伴并不是很喜欢,希望可以有不受壁纸限制的方法. 今天为大家更新快捷指令规则文件,桌面图标任意摆放, ...
- vb.net 获取系统图标_微商城和小程序商城图标8个设计注意事项
我们每天都在设计图标,并且保持这样的状态超过15年.身为设计师,想必你已经阅读过很多关于图标设计的文章,但是今天的文章不一样. 今天的文章不会花费很长时间来单独介绍某一个图标的设计.而是设计任何一套图 ...
- IO流文件的相对路径及获取系统路径方法
本机测试的时候经常没有问题,但是一上服务器就出现无法读取文件的事情可以通过class反射的方法获取文件的系统路径,免得出现异常. 以下是一个测试的demo,通过注释的方式说明了一下问题与解决方案. p ...
最新文章
- Java提高班(一)Thread详解
- neo4j 显示名字_Neo4j:绘制“我的名字是……我在工作”图
- 基于C语言、线性表的 二、八、十、十六进制转换 及 加运算、左右移位运算、乘法运算 的科学计算器设计
- WEB自定义控件小记
- Kafka 分布式消息系统 基础概念剖析
- IDEA拉取GitLab代码出现Git Pull failed remote: HTTP Basic: Access denied
- ActivityGroup的简单用法
- java hostwrite_Java IOUtils.write方法代碼示例
- 用C#将PDF转换为Doc
- android 改机型玩王者,安卓手机改机型华为nova 8 Pro体验《王者荣耀》90帧超高帧率模式...
- 集合框架学习笔记(下)
- JAVA点餐系统计算机毕业设计Mybatis+系统+数据库+调试部署
- 皮特测评:蓝牙耳机哪个品牌最好?300元内最好的蓝牙耳机
- 新计算机的windows要不要不断更新,win10一直出现无法完成更新正在撤销更改请不要关闭你的计算机,怎么办?...
- elasticsearch删除过期数据
- 【复盘】记录生产环境问题,因没有及时合并maser
- linux命令行 随机排列,有趣的Linux命令行:随机输出唐诗宋词
- 提升个人效率减少焦虑——GTD法则
- 【相机】工业相机必看的六大参数
- 计算机学生英语面试自我介绍ppt,三星面试英语自我介绍.ppt
热门文章
- bert4keras使用笔记
- C语言程序设计:用strcpy比较数组(银行卡密码程序设计),strcpy(复制数组内容)和getchar()(敲键盘字符,统计不想要的字符的个数)...
- 支持英文/汉字/emoji长度计算的输入框实现
- c语言输出汽车仪表档位显示
- SqlServer 安装
- 碳热塑性塑料行业调研报告 - 市场现状分析与发展前景预测
- .xin域名亮相2017云栖大会·上海峰会(火爆现场)
- java基础(环境,java平台,jvm,异常,面向对象,数组,IO流,容器等等)
- uniapp引入echarts日历图 点击事件
- ASPLOS‘23 系统顶会论文 Plugsched :安全、高效的多场景调度器热升级详解