windows - 如何将已编译的资源 (.res) 文件链接到可执行文件

标签 windows visual-studio winapi portable-executable resource-files

我想要做的是以编程方式更新可执行文件的资源。

我有一个二进制资源 (.res) 文件,其中包含位图、图标、版本信息和 list ,使用 resource editor 创建,以及一个使用 AutoHotkey 编译的 PE 文件,我想将 .res 文件中的资源复制到该文件。

到目前为止,我曾经在命令提示符下使用 ResourceHacker 来执行此操作,但 ResourceHacker 无法重新分发,而且我想更优雅地执行此操作。

所以我在查看 WinAPI 函数,似乎有一种方法可以做到这一点:http://msdn.microsoft.com/en-us/library/windows/desktop/ms648008%28v=vs.85%29.aspx
但问题是,本文描述了如何将资源从可执行文件复制到另一个文件,并且您无法使用 LoadLibrary 导入非可执行文件(.res 文件)。/LoadLibraryEx .

似乎还有一种方法可以使用 Visual Studio 中的工具来做到这一点,特别是 LINK.exe 。但我不确定它是否可以在 VS 环境之外使用。我不知道它是如何工作的。

最佳答案

您可以使用 UpdateResource function 以编程方式更新资源

不涉及RES文件。项目 makefile 系统使用 RES 文件来实现最小程度的资源重建...它们不必在每次重新链接应用程序时重新编译,只需嵌入即可。但您不会重新链接应用程序并丢失现有资源,因此只更新您想要更改的资源是正确的方法。

如果您的源资源已编码在 RES 文件中,则 this page describing "Resource File Formats"可以帮助您提取它们。它还描述了使用 LINK.exe 进行资源嵌入。 LINK.exe 作为 Visual Studio 的一部分安装,但在许多版本的 Platform SDK 和 Windows DDK 中也可用。

关于windows - 如何将已编译的资源 (.res) 文件链接到可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28013466/

相关文章:

c++ - 无法将缩略图按钮添加到窗口?

c# - 使用 C# 以编程方式检测 Windows 登录尝试

ruby - 在 ruby​​ 中使用 GetDIBits 函数时遇到问题

c++ - 如何找到激活时打开给定 HMENU 的菜单项(如果有)?

winapi - 尝试配置Windows服务的失败操作失败并显示访问被拒绝错误

windows - 为什么 Perl 系统调用无法调用内部 Windows 命令?

c# - 从 C# 休眠计算机

visual-studio-2010 - 如何在 CMake 中添加 Windows 库?

.net - Visual Studio 上的 ezdb 文件?

visual-studio-2010 - Visual Studio 解决方案资源管理器位置