如何 在程序中 调用 Explorer 所使用的图标

yylang1987 2009-03-22 05:22:20
包括两类图标
第一种是"前进" "后退" 向上等控制按钮的图标.


第二种是"里面的文件"所使用的图标.
比如MP3文件显示MP3的图标, 文件夹显示文件夹的图标.
这些值应该是在注册表里面配置的.


说明,把图标提取出来使用的方法就不用说了.
此方案已经被否决.
...全文
62 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wltg2001 2009-03-22
  • 打赏
  • 举报
回复
用ExtractIconEx不是更好一点,当然你要知道你所用的ICON的序号
yylang1987 2009-03-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cnzdgs 的回复:]
引用 3 楼 yylang1987 的回复:
SHGetFileInfo 貌似需要文件存在才可以使用.
有仅仅通过后缀取得图标的函数吗?

可以试试,感觉是没有文件也可以的,如果不行也可以临时创建一个文件。
[/Quote]
是可以的, 使用如下参数

SHFILEINFO ShellFileInfo;
SHGetFileInfo(TEXT("FILE NOT EXIST.exe"), NULL, &ShellFileInfo, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_USEFILEATTRIBUTES);

cnzdgs 2009-03-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yylang1987 的回复:]
SHGetFileInfo 貌似需要文件存在才可以使用.
有仅仅通过后缀取得图标的函数吗?
[/Quote]
可以试试,感觉是没有文件也可以的,如果不行也可以临时创建一个文件。
oyljerry 2009-03-22
  • 打赏
  • 举报
回复
后缀信息都在注册表中,然后注册表中设定了它对应的icon信息等,你可以查找注册表来
yylang1987 2009-03-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cnzdgs 的回复:]
第二种,用SHGetFileInfo来取。
[/Quote]

SHGetFileInfo 貌似需要文件存在才可以使用.
有仅仅通过后缀取得图标的函数吗?
cnzdgs 2009-03-22
  • 打赏
  • 举报
回复
第一种,先查一下图标在哪个文件里面、资源ID或名称是什么,程序中用LoadLibraryEx载入文件,再LoadIcon。
第二种,用SHGetFileInfo来取。
oyljerry 2009-03-22
  • 打赏
  • 举报
回复
第一类利用shell32.dll...

第二类是通过注册表找到这个软件的关联的icon位置

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧