ResHacker.exe(GUI)
ResHacker.exe(GUI)
実行ファイル中の資源を書き換える
http://www.angusj.com/resourcehacker/index.php
http://www.angusj.com/resourcehacker/reshack_setup.exe
http://www.angusj.com/resourcehacker/rh_japanese.zip
ResHacker.exe -script スクリプト
-script scriptfile
-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 削除
スクリプトを使わない場合、%~dp0ResHacker.log、にlogが保存される
ResourceMaskを省略した場合、その部分以外に合致する全てが対象になる
24 March 2002 (Version 3.5 beta.0):
* 32-bit Resource ファイル (*.res) の表示と編集が出来るようにした
* 追加 次のDialog extended style フラグに対応した: WS_EX_LAYERED, WS_EX_NOINHERITLAYOUT, WS_EX_LAYOUTRTL and WS_EX_NOACTIVATE
* All resource language ID (except those for cursors and icons) を簡単に変更出来るようにした
* Bug fix: LBS_NOINTEGRALHEIGHT and LBS_MULTICOLUMN listbox style flags in dialogs previously could not be combined.
---resall.bat--------------------------
md "%~n1"
echo [FILENAMES]> "%~n1\%~n1.rhs"
echo Exe=%~1>> "%~n1\%~n1.rhs"
echo SaveAs=>> "%~n1\%~n1.rhs"
echo Log=%~n1\%~n1.log>> "%~n1\%~n1.rhs"
echo.>> "%~n1\%~n1.rhs"
echo [COMMANDS]>> "%~n1\%~n1.rhs"
echo -extract %~n1\%~n1.rc,,,>> "%~n1\%~n1.rhs"
ResHacker.exe -script "%~n1\%~n1.rhs"
@findstr 処理が完了しました "%~n1\%~n1.log"
@if not %ERRORLEVEL% == 0 start "" notepad "%~n1\%~n1.log"
---------------------------------------
---resreps.cmd-------------------------
@if NOT EXIST "%~s1" (
echo 辞書ファイルを使って資源を書き換えるバッチ
echo 使用法: %0 書き換え対象,ResType,[ResName],[ResLang]任意の拡張子
pause
goto :eof
)
pushd %CD%
cd /d "%~dp1"
if %1 == "%~1" call :前処理 %~nx1&goto :eof
:前処理
if not exist "%~n1_original%~x1" copy "%~nx1" "%~n1_original%~x1"
ResHacker.exe -extract %~nx1,%~n2%~n3%~n4元.RC,%~n2,%~n3,%~n4
for %%a in (ResHacker.log) do copy "%%~$PATH:a" "%~n2%~n3%~n4元.log"
if "%~n2"=="RCDATA" goto DFM前処理
goto RC置換
:DFM前処理
for /f "usebackq tokens=2" %%a in (`findstr /r /c:"^\/\/ .*\.dfm" "%~n2%~n3%~n4元.RC" `) do set dfm=%%~na&call :DFM置換 %*
@goto 後処理
:DFM置換
for %%a in (0A) do copy /b "%DFM%.dfm" + "%%~$PATH:a" 一時.dfm
copy "%*" 一時.REP
REPS.EXE /d=一時.REP 一時.dfm > "%DFM%換.dfm"
ResHacker.exe -addoverwrite %~nx1,%~nx1,%DFM%換.dfm,RCDATA,T%DFM%,%~n4
for %%a in (ResHacker.log) do copy "%%~$PATH:a" "%~n2T%DFM%%~n4換.log"
findstr 処理が完了しました "%~n2T%DFM%%~n4換.log"
if not %ERRORLEVEL% == 0 start "" notepad "%~n2T%DFM%%~n4換.log"
@goto :eof
:RC置換
copy "%*" 一時.REP
for %%a in (0A) do copy /b "%~n2%~n3%~n4元.RC" + "%%~$PATH:a" 一時.RC
REPS.EXE /d=一時.REP 一時.RC > "%~n2%~n3%~n4換.RC"
brcc32.exe "%~n2%~n3%~n4換.RC" > "%~n2%~n3%~n4語.log"
ResHacker.exe -addoverwrite %~nx1,%~nx1,%~n2%~n3%~n4換.RES,%~n2,%~n3,%~n4
for %%a in (ResHacker.log) do copy "%%~$PATH:a" "%~n2%~n3%~n4換.log"
findstr 処理が完了しました "%~n2%~n3%~n4換.log"
if not %ERRORLEVEL% == 0 start "" notepad "%~n2%~n3%~n4換.log"
@goto 後処理
:後処理
del 一時.*
@rem del *.RC *.RES *.log *.dfm *.bin
popd
@goto :eof
0A、は%Path%に入れた1byteのファイル
「,」が「 」として認識するのを利用した
書き換え対象に空白が入る時は正常に動作しない
ResTypeを指定しないと、
ResHacker.exe -extract ~,元.RC,,,、を実行するので正常に抽出出来ない
---------------------------------------
最終更新:2011年03月13日 19:06