代码之家  ›  专栏  ›  技术社区  ›  PeterK

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

  •  4
  • PeterK  · 技术社区  · 14 年前

    我需要找到一个windows可执行文件(PE file=dll,exe,com..)的默认图标。我知道如何浏览这些资源并确定什么是图标、什么是光标等,但据我所知,没有一个图标以任何方式被标记为默认图标。那么,有人知道如何找到默认图标吗?此外,我不想使用任何windowsapi调用,我想自己编写函数。问题是我不知道哪个图标是默认的。

    2 回复  |  直到 14 年前
        1
  •  7
  •   evandrix    4 年前

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

    look here ,但简而言之 以下是重要信息:


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

    1. 如果不止一个这样的资源 资源中列出的资源 脚本。

      • 选择适当的RT\ U图标图像 存在多个图像 系统使用以下标准

      • 在大小上最接近目标的图像 已选择请求的大小。

      • 如果有两个或更多这样大小的图像 是存在的,与

      • 显示深度,图像 最大的颜色深度 选择显示。如果全部超过 选择颜色深度。

    系统将所有8个或更多bpp的颜色深度视为相等。因此,将16x16 256色图像和16x16 16色图像包含在同一资源中没有好处,系统将简单地选择它遇到的第一个资源。当显示器处于8-bpp模式时,系统将选择16色图标而不是256色图标,并使用系统默认调色板显示所有图标。


    默认图标是第一个图标组中的图标,该图标具有最小的大小(不能存在小于16x16的图标)和最高的颜色深度。

    编辑:一个小的修正。资源中可能有一个小于16x16的图标,但这表明文件没有默认图标,系统会提供自己的图标。

        2
  •  4
  •   Chris Becke    14 年前