我需要以编程方式findWindows可执行文件(PE文件= DLL,EXE,COM ..)的默认图标。 我知道如何浏览资源,并确定什么是图标,什么是游标等,但据我所知,没有任何图标被标记为默认图标。 那么,有人知道,如何find默认的图标? 此外,我不想使用任何Windows API调用,我想自己编写的function。 问题是我不知道哪一个图标是默认的。
将应用程序图标和窗口图标设置为Windows 7友好图标
更改窗口中的特定文件的图标,如保pipe箱
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] 举报,一经查实,本站将立刻删除。