如何将资源从一个可执行文件复制到另一个

时间:2012-02-14 16:50:26

标签: c winapi resources icons exe

好的,我的问题有点奇怪。但是我们走了。

我正在尝试开发一个可执行文件" wrapper"和控制台程序。控制台程序的任务是将图标和版本信息从另一个exe文件复制到包装器文件,以便包装器文件和exe文件看起来完全相同。除此之外,exe文件最后附加到包装文件。因此,当执行包装器时,它可以提取并执行附加的exe文件。

我的问题是如何创建包装文件以容纳来自其他exe文件的图标和版本信息?我的意思是我的资源文件应该如何?

接下来是如何复制图标和版本信息。我搜索并找到了一些代码和MSDN指令,但他们每个人都使用FindResource,LoadResource等。但是通过遵循这个方法,我丢失了包装文件的原始内容。我的文件大小从最初的67kb减少到14kb,当我在记事本中打开时,我看到很多内容都消失了......

可以使用SHGetFileInfo()完成任何事情吗?这可以用来从exe文件中获取HICON。但是如何使用此HICON替换包装文件中的图标资源?

1 个答案:

答案 0 :(得分:1)

previous question中的基本方法是正确的。你绝对不想与SHGetFileInfo和HICONs混在一起。资源类型无关紧要。

你的包装器应该从没有资源开始。例如,这可以确保您添加的任何图标都是第一个和最低编号,因此可以保证用作应用程序图标。

要了解您的代码发生了什么,请使用可以查看生成的exe中的资源的工具。 Visual C ++ Express无法做到这一点,但付费版本可以。或者,谷歌出现了一堆免费的实用程序来做到这一点。 Here's one,我不知道这是否有用。该页面还包含指向其他一些工具的链接。