微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在可执行文件的资源中,如何find默认图标?

我需要以编程方式findWindows可执行文件(PE文件= DLL,EXE,COM ..)的认图标。 我知道如何浏览资源,并确定什么是图标,什么是游标等,但据我所知,没有任何图标被标记认图标。 那么,有人知道,如何find认的图标? 此外,我不想使用任何Windows API调用,我想自己编写的function。 问题是我不知道哪一个图标是认的。

将应用程序图标和窗口图标设置为Windows 7友好图标

更改窗口中的特定文件的图标,如保pipe箱

自定义图标每个文件实例

获取shell图标的最快方法

.exe文件大小是否会影响它的图标显示

经过大量的搜索,我发现认的图标不是最低的ID。

Windows使用几种尺寸的一个图标来处理各种事情。 欲了解更多信息, 请看这里 ,但总之这里是重要的信息:

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

选择RT_GROUP_ICON资源。 如果存在多个此类资源,则系统使用资源脚本中列出的第一个资源。

从RT_GROUP_ICON资源中选择适当的RT_ICON映像。 如果存在多个图像,则系统使用以下标准来选择图像:

选择与所请求尺寸最接近的图像。

如果存在两个或更多尺寸的图像,则选择与显示颜色深度相匹配的图像。

如果没有图像与显示器的颜色深度完全匹配,则选择颜色深度不超过显示器颜色深度的图像。 如果全部超过颜色深度,则选择具有最低颜色深度的颜色深度。

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

由于请求的大小是16×16(因为这是系统的小图标大小,即认的图标大小),我想我们可以说认图标是从第一个图标组中具有最小的大小的图标(没有比16×16更小的图标可以存在)具有最高的颜色深度。

编辑:一个小的更正。 一个尺寸小于16×16的图标可能显然是在资源中,但是这表明该文件没有认图标,系统则提供自己的图标。

你找到的第一个认的。

认图标只是最低的图标,所以根据定义,它是枚举资源时发现的第一个图标。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐