win32 资源中的图标名称?
Icon name in win32 resources?
我正在编写一个 Win32 应用程序 (extract.exe) 来列出或提取模块资源(EXE 或 DLL)中的图标或其他资源。该应用程序是用 C 编写的。它在 'FindResource()' 失败,我相信是因为名称不正确。目标应用程序 (app.exe) 在其 RC 脚本 (app.rc) 中包含以下内容:
MYICON ICON DISCARDABLE "app.ico"
MYRCDATA RCDATA DISCARDABLE "hello.txt"
我用各种第三方工具和我自己的应用检查了 app.exe 的资源:图标的资源名称显示为 "1"而不是 "MYICON",但 RCDATA 的名称正确显示为 "MYRCDATA".
我已经确认“app.ico”是一个有效的 .ico 文件,但仍然不满意。
我在这里错过了什么?
注意:我 运行 win10/64 在 Dell 机器上使用 MS Visual C 进行编译。
我终于明白了。显然,资源编译器将图标文件分成两部分:(1) “图标目录”(又名“RT_GROUP_ICON”)和 (2) 图标本身。该目录包含一个 6 字节的 header 和一个或多个 16 字节的条目,其中包括实际图标的整数“ID”(在我的例子中为 1)。目录条目的格式为:
typedef struct // This is the Directory Entry stored in resources
{
BYTE Width;
BYTE Height;
BYTE Colors;
BYTE Reserved;
WORD Planes;
WORD BitsPerPixel;
DWORD ImageSize;
WORD ResourceID
} IconDirResEntry, *PIconDirResEntry;
对此的一个很好的描述可以在
https://www.codeguru.com/cpp/w-p/win32/tutorials/article.php/c12873/Hacking-Icon-Resources.htm
在我的例子中,资源“MYICON”是 RT_GROUP_ICON 图标目录,其中包含 ID 值“1”。
我正在编写一个 Win32 应用程序 (extract.exe) 来列出或提取模块资源(EXE 或 DLL)中的图标或其他资源。该应用程序是用 C 编写的。它在 'FindResource()' 失败,我相信是因为名称不正确。目标应用程序 (app.exe) 在其 RC 脚本 (app.rc) 中包含以下内容:
MYICON ICON DISCARDABLE "app.ico"
MYRCDATA RCDATA DISCARDABLE "hello.txt"
我用各种第三方工具和我自己的应用检查了 app.exe 的资源:图标的资源名称显示为 "1"而不是 "MYICON",但 RCDATA 的名称正确显示为 "MYRCDATA".
我已经确认“app.ico”是一个有效的 .ico 文件,但仍然不满意。
我在这里错过了什么?
注意:我 运行 win10/64 在 Dell 机器上使用 MS Visual C 进行编译。
我终于明白了。显然,资源编译器将图标文件分成两部分:(1) “图标目录”(又名“RT_GROUP_ICON”)和 (2) 图标本身。该目录包含一个 6 字节的 header 和一个或多个 16 字节的条目,其中包括实际图标的整数“ID”(在我的例子中为 1)。目录条目的格式为:
typedef struct // This is the Directory Entry stored in resources
{
BYTE Width;
BYTE Height;
BYTE Colors;
BYTE Reserved;
WORD Planes;
WORD BitsPerPixel;
DWORD ImageSize;
WORD ResourceID
} IconDirResEntry, *PIconDirResEntry;
对此的一个很好的描述可以在 https://www.codeguru.com/cpp/w-p/win32/tutorials/article.php/c12873/Hacking-Icon-Resources.htm
在我的例子中,资源“MYICON”是 RT_GROUP_ICON 图标目录,其中包含 ID 值“1”。