在我们写程序的时候有可能需要用到我的电脑等系统图标,如何获取这些图标为我所用呢?
网络上搜索了一遍,发现大都是ExtractIconEx某些文件,如explorer.exe、shell32.dll等文件,但这些文件图标的位置(顺序)以为操作系统的不同未必一定保持不变。
后来突然发现,既然实现目录树的时候都能得到这些图标了,那这种方式不是更直接吗?
大致流程如下:先用GetSystemImagelist获取系统图形列表句柄,再用SHGetSpecialFolderLocation获取这些系统虚拟文件夹的PIDL,最后用SHGetFileInfo根据PIDL传SHGFI_SYSICONINDEX标志获取一个SHFILEINFO结构,最后得到的SHFILEINFO.iIcon就是我们需要的东西。此时如果需要使用这些图标,用ImageList_GetIcon即可获得了。
个人觉得这个方式是最简洁明了的了。欢迎大家讨论。