使用Resource Hacker修改dll位圖資源
作者:佚名 字體:[增加 減小] 來(lái)源:互聯(lián)網(wǎng) 時(shí)間:06-21 14:11:04 我要評論
所有 Resource Hacker(TM) GUI 的功能(除了查看資源)都可以從命令行來(lái)訪(fǎng)問(wèn),而不用打開(kāi) Resource Hacker(TM)。命令行腳本可以去掉運行 Resource Hacker(TM) 重復任務(wù)的苦差事。
命令行腳本有 2 個(gè)通用的窗體:
1. 單命令:
ResHacker.exe 命令 命令_參數
2. 多命令:
ResHacker.exe -腳本 腳本文件
單命令:
命令和命令_參數:
-add ExeFile, SaveAsFile, ResourceFile, ResourceMask
-addskip ExeFile, SaveAsFile, ResourceFile, ResourceMask
-addoverwrite ExeFile, SaveAsFile, ResourceFile, ResourceMask
-modify ExeFile, SaveAsFile, ResourceFile, ResourceMask
-extract ExeFile, ResourceFile, ResourceMask
-delete ExeFile, SaveAsFile, ResourceMask
每個(gè)命令參數必須由逗點(diǎn)分隔,但第一個(gè)參數之前不要有逗點(diǎn)。
如果路徑不包括文件名,那么操作系統的當前文件夾就假設為包括命名過(guò)的文件。通常這是良好的習慣,雖然在這里不要求,用雙引號圍住包含空格的文件名。
ResourceMask 允許用命令來(lái)執行單個(gè)或多個(gè)資源項并獲得窗體 ResType、ResName、ResLang。如果 ResType 是一個(gè)預定義的類(lèi)型,那么其編號或標識符都可以使用。如 ResourceMask dialog,128,0 與 5,128,0 是一樣的??梢允÷砸徊糠只蛩械?ResourceMask 項。如 dialog,, 說(shuō)明一下,所有對話(huà)都將被應用到命令中,而不考慮名稱(chēng)或語(yǔ)言。并且,,,1049 表示所有含 Russian (1049) 和資源都將應用到命令中。一個(gè)空的 ResourceMask ,, 表示命令將應用到每個(gè)資源中,而不考慮類(lèi)型、名稱(chēng)或語(yǔ)言。
當添加或修改項目時(shí),ResourceFile 可以是任何項目類(lèi)型的 RES 文件、BITMAP 類(lèi)型的 BMP 文件、CURSORGROUP 類(lèi)型的 CUR 文件、ICONGROUP 類(lèi)型的 ICO 文件、以及 RCDATA 和用戶(hù)定義資源類(lèi)型的任何文件類(lèi)型。
從文件而不是從 RES 文件中添加和修改資源時(shí),ResType 和 ResName 必須在 ResourceMask 中指定。如果忽略了 ResLang,那么命令將以匹配的類(lèi)型和名稱(chēng)應用到第一個(gè)語(yǔ)言項中。否則,如果沒(méi)有匹配項存在,則假設語(yǔ)言為中性(0)。
在提取資源時(shí),ResourceMask 默認超過(guò)一個(gè)項目,那么指定的 ResourceFile 必須是一個(gè) RES 文件或 RC 文件。將二進(jìn)制圖像資源提取到 RC 文件中時(shí),也會(huì )將每個(gè)圖像創(chuàng )建為一個(gè)單獨的二進(jìn)制文件(ico、cur、bmp、gif、bin)。請看下面的例子。
不能直接操作 ICON 和 CURSOR 資源,除了通過(guò)使用其各自的 ICONGROUP 或 CURSORGROUP 來(lái)添加、刪除、修改、以及提取。ICON 和 CURSOR 仍然可以使用,但 Resource Hacker(TM) 將假定 ICONGROUP 或 CURSORGROUP 是預期的。
也可以添加 Borland 的 DFM 文件,而不考慮文件是否是二進(jìn)制或文本格式。不管用何種方法,它們將總是作為文本格式提取。(要將文本格式的 dfm 文件轉換為二進(jìn)制格式,請使用 Borland 的工具 Convert.exe。)
所有操作或錯誤都將記錄到“ResHacker.log”中。
注意:如果一個(gè)腳本不產(chǎn)生期望的結果就檢查日志!
舉例:(已經(jīng)忽略文件路徑,有助于理解)
要從 UpdDlg.res 添加或更新 MyProg.exe 中的對話(huà)名稱(chēng):maindlg lang:0
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, upddlg.res, dialog,maindlg,0
要從 NewImage.bmp 添加或更新 MyProg.exe 中的位圖名稱(chēng):128
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, NewImage.bmp , bitmap,128,
要從 Images.res 添加或更新 MyProg.exe 中的所有位圖
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, Images.res, bitmap,,
要從 ReadMe.htm l將“用戶(hù)定義”的二進(jìn)制資源 (README,1,0) 添加到 MyProg.exe 中
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, ReadMe.html, readme,1,0
要將 Images.res 中的所有項目添加到 MyProg.exe 中(但如果有任何項目存在就會(huì )失敗)
ResHacker.exe -add MyProg.exe, MyProgNew.exe, Images.res ,,,
要將 Images.res 中的所有項目添加到 MyProg.exe 中(跳過(guò)任何存在的項目)
來(lái)源:(http://blog.sina.com.cn/s/blog_63f454e40100jx4l.html) - 修改dll位圖資源【轉】_蟲(chóng)蟲(chóng)_新浪博客
ResHacker.exe -addskip MyProg.exe, MyProgNew.exe, Images.res ,,,
要以 Images.res 中的項目修改 MyProg.exe 中的所有項目 (忽略 Images.res 中的任何項目,其不存在于 MyProg.exe 中)
ResHacker.exe -modify MyProg.exe, MyProgNew.exe, Images.res , , ,
要從 MyProg.exe 中將所有圖標提取到 myprogicons.rc (創(chuàng )建 MyProgIcons.rc、Icon_1.ico、Icon_2.ico、Icon_3.ico 等等...)
ResHacker.exe -extract MyProg.exe, myprogicons.rc, icongroup,,
要從 MyProg.exe 中刪除 GIF 名稱(chēng):128
ResHacker.exe -delete MyProg.exe, MyProgNew.exe, gif,128,
多命令:
語(yǔ)法:ResHacker.exe -script 腳本文件
腳本文件是一個(gè)文本文件,有下列格式:
//注釋前加上雙斜杠
[FILENAMES]
Exe=
SaveAs=
Log=
[COMMANDS]
-add ResourceSrc, ResourceMask
-addskip ResourceSrc, ResourceMask
-addoverwrite ResourceSrc, ResourceMask
-addoverwrite ResourceSrc, ResourceMask
-modify ResourceSrc, ResourceMask
-extract ResourceTgt, ResourceMask
-delete ResourceMask
如果忽略日志,那么將使用默認日志 - ResHacker.log。
注意:如果一個(gè)腳本不產(chǎn)生期望的結果就檢查日志!
舉例:
rh_script_myprog_rus.txt -
//在以 Russian(1049) 項目替換它們之前,
//該腳本將刪除 MyProg.exe 中的所有語(yǔ)言中性(0)
//的字串表、菜單和對話(huà)資源項...
[FILENAMES]
Exe= MyProg.exe
SaveAs= MyProg_Rus.exe
Log= MyProg_Rus.log
[COMMANDS]
-delete MENU,,0
-delete DIALOG,,0
-delete STRINGTABLE,,0
-add MyProg_Rus.res, MENU,,1049
-add MyProg_Rus.res, DIALOG,,1049
-add MyProg_Rus.res, STRINGTABLE,,1049
rh_script_myprog_upd_images.txt -
//該腳本在 MyProg.exe 中更新 2 個(gè)位圖和一個(gè)圖標...
[FILENAMES]
Exe= MyProg.exe
SaveAs= MyProg_Updated.exe
[COMMANDS]
-addoverwrite Bitmap128.bmp, BITMAP,128,
-addoverwrite Bitmap129.bmp, BITMAP,129,0
-addoverwrite MainIcon.ico, ICONGROUP,MAINICON,0
rh_script_myprog_upd_all.txt -
//該腳本以 MyProgNew.res 中的所有資源
//替換 MyProg.exe 中的所有資源
[FILENAMES]
Exe= MyProg.exe
SaveAs= MyProg_Updated.exe
[COMMANDS]
-delete ,,, //在...之前刪除所有資源
-add MyProgNew.res ,,, //添加所有新的資源