如果想得到windows中我的电脑或者网络邻居等系统图标可以有如下解决办法。

方案一
用图标提取软件从c:\winnt\system32\SHELL32.dll或者C:\WINNT\Explorer.exe中提取出来然后加入到自己的程序中(路径随操作系统和安装目录不同而变化)这种方法的缺点是不同的操作系统的系统图标有一些变化,比如说2003和2000的系统图标就有很大变化,如果你提取的是2000的图标,应用程序如果在2003下运行可能看起来有一些别扭。

方案二
同样是利用c:\winnt\system32\SHELL32文件来提取,但是这次是利用注册表和windows的函数来完成。代码如下:
HICON CTestDlg::GetShellIcon(int nIndex)
{
HICON hIcon=NULL;
HKEY hkeyShellIcons;

//打开注册表,读相应的图标项目
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell I cons", 0,KEY_READ,&hkeyShellIcons)==ERROR_SUCCESS)
{
char szBuffer[MAX_PATH];
DWORD dwSize=MAX_PATH;

char szIndex[4];
sprintf(szIndex,"%d",nIndex);
if(RegQueryValueEx(hkeyShellIcons,szIndex,NULL,NULL,(LPBYTE)szBuffer,&dwSize)==ERROR_SUCCESS)
{
CString strFile,strIndex;
AfxExtractSubString(strFile,szBuffer,0,',');
AfxExtractSubString(strIndex,szBuffer,1,',');
ExtractIconEx(strFile,atoi(strIndex),NULL,&hIcon,1);
}
RegCloseKey(hkeyShellIcons);
}
if(!hIcon)
ExtractIconEx("SHELL32.DLL",nIndex,NULL,&hIcon,1);

return hIcon;
}
这种方法克服了第一种方法使用不灵活的缺点但是代码量比较大。(index目录在最后列出)

方案三
利用shell函数SHGetSpecialFolderLocation和SHGetFileInfo。代码如下:

LPITEMIDLIST lpItemIDList;
SHFILEINFO shinfo;
SHGetSpecialFolderLocation (this->m_hWnd, CSIDL_NETWORK, &lpItemIDList);
SHGetFileInfo( (LPCTSTR)lpItemIDList,
NULL,
&shinfo,
sizeof(shinfo),
SHGFI_SYSICONINDEX | SHGFI_DISPLAYNAME | SHGFI_ICON| SHGFI_SMALLICON|SHGFI_PIDL);
这是shinfo中的icon和hicon保存了得到的icon的值。
这种方法既有灵活性,代码量也比较少,推荐使用。在SHGetSpecialFolderLocation中的第二个参数是想得到的图片的CSIDL值。

【附表1:nindex值说明】
nIndex 意义 说明
0 默认图标
1 默认的 .doc 图标*
2 可执行文件图标

3 关闭的文件夹图标
4 打开的文件夹图标
5 5.25' 驱动器图标
6 3.5' 驱动器图标
7 可移动的驱动器图标
8 硬盘驱动器图标
9 网络驱动器图标
10 断开的网络驱动器图标
11 CD-ROM驱动器图标
12 RAM驱动器图标
13 整个网络图标
14 网络连接图标 u
15 网络工作站图标
16 本地打印机图标 *
17 网络图标 u
18 网络工作组图标 u
19 程序组图标 s
20 文档图标 s
21 设置图标 s
22 查找图标 s
23 帮助图标 s
24 运行图标 s
25 睡眠图标 s
26 Docking Station 图标 u
27 关机图标 s
28 共享图标 t
29 快捷方式的箭头图标 t
30 大箭头图标 u
31 空回收站图标 *
32 满的回收站图标 *
33 拨号网络图标 *
34 桌面图标
35 控制台图标 *
36 程序组图标 s
37 打印机文件夹图标 *
38 字体文件夹图标 *
39 Windows旗帜图标 * 软件开发网
40 Audio CD 图标
.
.
.
.49

后面标有符号的说明有特殊用法:
* 这些图标可以在注册表的其他地方的设置。
t 这些图标必须是空白背景。
s 这些图标将用在开始菜单上。
u 这些图标可能并没有使用或不能通过注册表修改

得到windows系统图标的解决方案(转)相关推荐

  1. w7旗舰版计算机替换,win7系统电脑替换全部系统图标的操作方法

    很多小伙伴都遇到过对win7系统电脑替换全部系统图标进行设置的困惑吧,一些朋友看过网上对win7系统电脑替换全部系统图标设置的零散处理方法,并没有完完全全明白win7系统电脑替换全部系统图标是如何设置 ...

  2. 提取Win10系统图标的方法

    Win10系统的变化很大,其中又以界面的改动最多.比如说Win10系统图标就全部更新了一遍,把Win10的系统图标提取出来,就可以在其他系统上安装这些图标,来体验Win10的效果.本文就来为大家介绍一 ...

  3. 计算机无法检测更新失败怎么办,Windows更新错误解决方案

    Windows更新错误解决方案 windows update老是提示更新,可是每次都更新失败了,还会开机时要求还原更改,浪费很长时间,使人抓狂,下面给大家介绍Windows更新错误解决方案,一起来了解 ...

  4. Windows打印管理解决方案

    Windows打印管理解决方案 参考文章: (1)Windows打印管理解决方案 (2)https://www.cnblogs.com/monotone/p/4386310.html 备忘一下.

  5. cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-buil windows下的解决方案

    cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-buil windows下的解决方案 环境:win10 ...

  6. 关于:win10应用商店下载东西时提示此安装被策略阻止,需请求管理员启用 Windows 更新(解决方案)

    关于:win10应用商店下载东西时提示此安装被策略阻止,需请求管理员启用 Windows 更新(解决方案) 问题描述↓ 解决方法↓ 打开[开始]菜单,输入cmd,右键选择[以管理员身份运行]: 执行以 ...

  7. MySql错误1045 Access denied for user 'root'@'localhost' (using password:YES) windows下的解决方案(忘记密码)

    MySql错误1045 Access denied for user 'root'@'localhost' (using password:YES) windows下的解决方案(忘记密码) 1.进入管 ...

  8. symantec阻止office、windows激活的解决方案

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

  9. windows闪屏解决方案

    关于windows10开机出现刷新闪屏的处理方法: 今天开机突然发现电脑一直刷新闪屏,重复开关机几次也没有作用,试了网上各种方法也没有用,例如打开计算机管理的应用与服务程序,关闭服务中的Problem ...

最新文章

  1. 【超越白皮书3】DAG技术解析与实测
  2. linux切换root权限
  3. C语言预处理命令总结
  4. python读取csv某些行_【Python】Python 读取csv的某行或某列数据
  5. 如何成为架构师?7个关键的思考、习惯和经验
  6. 利用PCL做点云的平面拟合
  7. RISC-V架构指令集开源
  8. [2018.07.21 T3] Booom
  9. python中and和的区别_python中逻辑与或(and、or)和按位与或异或(amp;、|、^)区别...
  10. 解决MySQL登录1045错误
  11. 2022智博会| 麒麟信安携操作系统亮相华为展台
  12. java程序设计基础陈国君_Java程序设计基础(第6版)
  13. 解决Linux系统centos7的开机报错:Welcome to emergency mode
  14. 我国对计算机科学与技术专业人才社会需求,浅谈计算机科学与技术专业应用技术型人才的培养研究论文...
  15. AdGuard过滤规则
  16. 企业从无到有,云账户CEO大谈创业时代的创业者思维
  17. lrd热加载方式启动本地web服务(我用于从github把别人服务器代码拉倒本地去搭建自己的网络服务)
  18. 接收微信公众号的事件推送并且回复消息
  19. 关于isl28022电源芯片的校准寄存器的配置问题
  20. Hadoop自定义排序实现topN

热门文章

  1. Docker了解(官方解读)
  2. 【干货】史上最全的Tensorflow学习资源汇总,速藏!
  3. 微信样式组件遇到的小坑
  4. 在 VC6 中使用 GdiPlus-使用
  5. VMware Workstation 更改语言
  6. ibatis主键自动生成
  7. 闲诗一首:《扬州即行》
  8. windows系统无法创建文件共享
  9. 仿即刻的点赞滚动放大波纹图标
  10. vuex入门,详细的讲解