Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 是否从可执行文件中获取图标信息?_Windows_Icons_Gdi_Winapi - Fatal编程技术网

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

Windows 是否从可执行文件中获取图标信息?,windows,icons,gdi,winapi,Windows,Icons,Gdi,Winapi,我正在尝试使用以下API从.exe文件获取图标: SHGetFileInfoW()SHGetImageList(),从由此获得的ImageList中,我通过调用GetIcon()读取图标 当机器的颜色深度设置为32位时,我会得到32位的颜色图标。问题是,当我将机器的颜色深度更改为24或16位时,我会得到一个16位的颜色图标,而此图像似乎已损坏 我还检查了一些常用windows应用程序(记事本、油漆等)和一些office应用程序中的可用图标列表,没有一个有16位或24位彩色图标 从可执行文件中获取

我正在尝试使用以下API从.exe文件获取图标:
SHGetFileInfoW()SHGetImageList(),从由此获得的ImageList中,我通过调用GetIcon()读取图标

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

我还检查了一些常用windows应用程序(记事本、油漆等)和一些office应用程序中的可用图标列表,没有一个有16位或24位彩色图标

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


谢谢

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

exe可能有一组图标图像,我如何选择所需的图标(例如颜色深度为32的图标)?如果您使用的是LoadImage,则它将根据LoadImage的参数选择正确的图标。如果您使用的是LoadResource,则需要知道每个图标文件对应一个RT_图标组资源,该组资源依次指向各个RT_图标资源,ico文件中支持的每个设备深度对应一个。差不多吧。