2012-02-14 63 views
0

好吧,我的問題有點奇怪。但是,我們走了。如何將資源從一個可執行文件複製到其他

我想開發一個可執行文件「包裝器」和控制檯程序。控制檯程序的任務是將圖標和版本信息從另一個exe文件複製到包裝文件,以便包裝文件和exe文件看起來完全相同。除此之外,exe文件在最後附加到包裝文件。所以當包裝器被執行時,它可以提取並執行附加的exe文件。

我的問題是如何創建包裝文件,以容納從其他exe文件的圖標和版本信息?我的意思是我的資源文件應該如何?

接下來是如何複製圖標和版本信息。我hv搜索並找到一些代碼和MSDN指令,但他們每個人都使用FindResource,LoadResource等。但通過遵循此方法,我正在丟失包裝文件的原始內容。我的文件大小從原來的67kb減少到14kb,當我在記事本中打開時,我看到很多內容都不見了...

可以通過使用SHGetFileInfo()來完成任何操作嗎?這可以用來從exe文件中獲取HICON。但是如何使用這個HICON來替換包裝文件中的圖標資源?

+0

[複製從一個exe圖標到另一個錯誤]的可能的副本(http://stackoverflow.com/questions/9278108/copy-icon-from-one-exe-to-another-error) – 2012-02-14 17:20:26

+0

這是否重要??有人給答案atleast – 2012-02-14 17:42:53

+0

要求一個答案將無濟於事。一遍又一遍問同樣的問題是無濟於事的。我建議你閱讀[faq]。 – 2012-02-14 17:44:34

回答

1

previous question中的基本方法是正確的。你絕對不想使用SHGetFileInfo和HICONs。資源的類型應該不重要。

你的包裝應該從沒有資源開始。例如,這可以確保您添加的任何圖標都是第一個和最低編號,因此可以保證用作應用程序圖標。

要理解您的代碼發生了什麼,請使用可以查看生成的exe中的資源的工具。 Visual C++ Express無法做到這一點,但付費版本可以。或者,谷歌出現了一大堆免費的工具來做到這一點。 Here's one,我不知道它是否有用。該頁面還包含一些其他工具的鏈接。

+0

但是,如果我不保留包裝中的任何資源,那麼程序將如何更新圖標數據? – 2012-02-14 19:10:38

+0

@ S.Swaroop從MSDN:「UpdateResource添加,刪除或替換可移植可執行文件(PE)文件中的資源。」你添加一個資源;有什麼問題? – arx 2012-02-14 20:31:17

+0

我試過了。我從包裝文件中刪除了所有資源。然後我試圖修改圖標。我在這裏使用該程序[鏈接] http://stackoverflow.com/questions/9278108/copy-icon-from-one-exe-to-another-error [鏈接],但它掛起,並沒有做任何事情。但是,如果我在使用該程序之前向exe中添加一些隨機圖標資源,可以更改圖標,但會發生尺寸問題。 – 2012-02-16 08:08:53

相關問題