从可执行文件中获取图标信息?

问题描述:

我尝试使用下面的API来获取从该.exe文件的图标:
SHGetFileInfoW()SHGetImageList(),并从的ImageList这样得到我通过调用调用getIcon阅读图标( )。从可执行文件中获取图标信息?

当机器的颜色深度设置为32位时,我得到32位彩色图标。问题是当我将机器的颜色深度更改为24或16位时,我得到一个16位彩色图标,并且此图像似乎已损坏。

我还检查了一些常见的Windows应用程序(记事本,绘画等)和一些办公应用程序中的可用图标列表,没有16位或24位颜色图标。

从可执行文件中获取正确图标的最佳方法是什么?

谢谢!

您可以使用LoadLibraryEx加载exe文件,然后使用LoadImage提取图标 - 或 - 如果要直接访问图标数据:FindResource,LoadResource,LockResource会为您提供一个指向图标资源位的指针。

+0

该exe文件可能有一堆ICON图像,我如何选择一个想要的图标说颜色深度为32的图标? – atVelu 2010-11-11 07:46:01

+0

如果您使用的是LoadImage,那么它将根据您的参数选择正确的LoadImage。如果您使用的是LoadResource,那么您需要知道每个图标文件都对应于一个RT_ICON_GROUP资源,该资源又指向单个RT_ICON资源,每个资源都支持ico文件中的每个设计深度。类似的东西。 – 2010-11-11 15:10:54