Windows系统SHELL图标获取的功能类分享
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Windows系统SHELL图标获取的功能类分享,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4796字,纯文字阅读大概需要7分钟。
内容图文
1.用途
- 可以获取系统图标列表
- 可以获取任意文件/文件夹/磁盘的图标
- 可以获取任意文件/文件夹/磁盘图标在系统图标列表中的位置
2.头文件
#pragma once #include <winnt.h> class CSHGetFileInfo { public: /// 获取系统图像列表 /// @param[in] bSmallIcon ture则为小图标,false则为大图标 static HIMAGELIST GetSystemImageListHandle(BOOL bSmallIcon = TRUE); /// 获取系统图片列表的文件图片索引 /// @param[in] strFileName 文件名 /// @param[in] bSmallIcon ture则为小图标,false则为大图标 static int GetFileIconIndex(CString strFileName, BOOL bSmallIcon = TRUE); /// 获取系统图片列表的文件夹图片索引 /// @param[in] bSmallIcon static int GetDirIconIndex(BOOL bSmallIcon = TRUE); /// 获取文件的icon的句柄 /// @param[in] diskName 磁盘名 /// @param[in] bSmallIcon ture则为小图标,false则为大图标 static int GetDiskIconIndex(LPCTSTR diskName, BOOL bSmallIcon = TRUE); /// 获取文件的icon的句柄 /// @param[in] strFileName 文件名 /// @param[in] bSmallIcon ture则为小图标,false则为大图标 static HICON GetFileIconHandle(CString strFileName, BOOL bSmallIcon = TRUE); /// 获取文件夹的icon的句柄 /// @param[in] bSmallIcon ture则为小图标,false则为大图标 static HICON GetFolderIconHandle(BOOL bSmallIcon = TRUE); /// 获取磁盘的icon的句柄 /// @param[in] diskName 磁盘名 /// @param[in] bSmallIcon ture则为小图标,false则为大图标 static HICON GetDiskIconHandle(LPCTSTR diskName, BOOL bSmallIcon = TRUE); /// 获取文件类型 /// @param[in] strFileName 文件名 static CString GetFileType(CString strFileName); };
3.源文件
#include "pch.h" #include "CSHGetFileInfo.h" 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)_T("Doesn‘t matter"), FILE_ATTRIBUTE_DIRECTORY, &sfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES); } else { SHGetFileInfo( (LPCTSTR)_T("Doesn‘t matter"), FILE_ATTRIBUTE_DIRECTORY, &sfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES); } return sfi.iIcon; } int CSHGetFileInfo::GetDiskIconIndex(LPCTSTR diskName, BOOL bSmallIcon) { SHFILEINFO sfi; DWORD attr = ::GetFileAttributes(diskName); if (bSmallIcon) { ::SHGetFileInfo(diskName, attr, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES); //获取文件信息 } else { ::SHGetFileInfo(diskName, attr, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX | SHGFI_ICON | 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)_T("Doesn‘t matter"), FILE_ATTRIBUTE_DIRECTORY, &sfi, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES); } else { SHGetFileInfo( (LPCTSTR)_T("Doesn‘t matter"), FILE_ATTRIBUTE_DIRECTORY, &sfi, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES); } return sfi.hIcon; } HICON CSHGetFileInfo::GetDiskIconHandle(LPCTSTR diskName, BOOL bSmallIcon) { SHFILEINFO sfi; DWORD attr = ::GetFileAttributes(diskName); if (bSmallIcon) { ::SHGetFileInfo(diskName, attr, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX | SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES); //获取文件信息 } else { ::SHGetFileInfo(diskName, attr, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX | 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; }
原文:https://www.cnblogs.com/veis/p/12962190.html
内容总结
以上是互联网集市为您收集整理的Windows系统SHELL图标获取的功能类分享全部内容,希望文章能够帮你解决Windows系统SHELL图标获取的功能类分享所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。