gpt4 book ai didi

c++ - 在可执行文件的资源中,如何找到默认图标?

转载 作者:可可西里 更新时间:2023-11-01 13:52:49 25 4
gpt4 key购买 nike

我需要以编程方式找到 Windows 可执行文件(PE 文件 = dll、exe、com..)的默认图标。我确实知道如何遍历资源并识别什么是图标、什么是光标等,但据我所知,没有任何图标以任何方式标记为默认图标。那么,有人知道如何找到默认图标吗?此外,我不想使用任何 windows api 调用,我想自己编写函数代码。问题是我不知道所有图标中的哪一个是默认图标。

最佳答案

经过大量搜索,我发现默认图标不是id最低的那个。

Windows 为不同的事物使用多种尺寸的一个图标。更多信息,look here ,但简而言之,这里是重要信息:


当系统显示图标时,它必须从.exe 或.dll 文件中提取适当的图标图像。系统使用以下步骤来选择图标图像:

  1. 选择 RT_GROUP_ICON 资源。如果有多个这样的资源存在,系统使用第一个资源中列出的资源脚本。

    • 选择合适的 RT_ICON 图片来自 RT_GROUP_ICON 资源。如果存在多个图像,则系统使用以下标准选择图片:

    • 尺寸最接近的图像选择要求的大小。

    • 如果有两张或多张该尺寸的图片存在,匹配的那个选择显示器的颜色深度。

    • 如果没有图像与颜色完全匹配显示器的深度,图像与最大的颜色深度不超过的颜色深度显示被选中。如果全部超过颜色深度,最低的那个选择颜色深度。

注意:系统将 8 个或更多 bpp 的所有颜色深度视为相同。因此,在同一资源中包含 16x16 256 色图像和 16x16 16 色图像没有任何优势——系统只会选择它遇到的第一个。当显示器处于 8-bpp 模式时,系统将在 256 色图标上选择 16 色图标,并使用系统默认调色板显示所有图标。


由于请求的大小是 16x16(因为这是系统小图标大小,即默认图标大小)我认为我们可以说默认图标是第一个图标组中具有最小尺寸的图标(不能存在小于 16x16 的图标)具有最高颜色深度。

编辑:一个小修正。尺寸小于 16x16 的图标显然在资源中,但这表明该文件没有默认图标,系统随后会提供自己的图标。

关于c++ - 在可执行文件的资源中,如何找到默认图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3270757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com