找回密码  加入

QQ登录

只需一步,快速开始

AUTOIT CN

搜索
查看: 115|回复: 2

[原创] Heaventools 语言包分析程序

[复制链接]
发表于 2019-11-26 21:30:53 | 显示全部楼层 |阅读模式
此程序主要用来分析语言包的结构, 方便手动精简语言或汉化语言。



下载:
附表:
Heaventools 主页: http://www.heaventools.com/

Resource Tuner
http://www.heaventools.com/download/rtsetup.exe

ResTuner Console
http://www.heaventools.com/download/rtc_setup.exe


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入

x

评分

1

查看全部评分

 楼主| 发表于 2019-11-26 21:35:53 | 显示全部楼层
附上源码:
  1. #NoTrayIcon
  2. FileInstall("D:\Program Files\Resource Tuner\ZlibUIN.exe", @TempDir & "\ZlibUIN.exe")
  3. Local $smessage = "请选择一个 Heaventools 语言包"
  4. Local $sfileopendialog = FileOpenDialog($smessage, @ScriptDir & "\", "语言包(langpack.dat)|所有文件(*.*)")
  5. If @error Then Exit
  6. $decompress = @TempDir & "\langpack.txt"
  7. Run(@TempDir & "\ZlibUIN.exe", @TempDir, @SW_HIDE)
  8. $title = "Zlib Tools"
  9. WinWait($title)
  10. WinActivate($title)
  11. ControlSetText($title, "", "[CLASS:obj_EDIT; INSTANCE:1]", $sfileopendialog)
  12. ControlSetText($title, "", "[CLASS:obj_EDIT; INSTANCE:2]", $decompress)
  13. ControlClick($title, "", "[CLASS:obj_BUTTON; INSTANCE:3]")
  14. Sleep(500)
  15. ProcessClose("ZlibUIN.exe")
  16. Local $number = _readbinary($decompress, 0, 4, True)
  17. $h = 60 + 20 * ($number + 1) + 10
  18. Local $hgui = GUICreate("Heaventools 语言包分析程序", 338, $h)
  19. GUICtrlCreateLabel("语言包: ", 10, 10, 56, 20)
  20. GUICtrlCreateLabel(_abbreviation($decompress, 46), 58, 10, 380, 20)
  21. GUICtrlCreateLabel("序列    偏移   语言                      代码   长度", 10, 50, 312, 20)
  22. Local $x = 70, $y = 1, $z
  23. For $i = 4 To 4 + ($number - 1) * 16 Step 16
  24.         $j = _readbinary($decompress, $i, 16, False)
  25.         $j = StringTrimLeft($j, 2)
  26.         $offset = Number(Binary("0x" & StringMid($j, 1, 8)))
  27.         $langlen = Number(Binary("0x" & StringMid($j, 9, 8)))
  28.         $langtxt = _decode(_readbinary($decompress, 4 + $number * 16 + $offset, $langlen, False), 2)
  29.         $langcode = Number(Binary("0x" & StringMid($j, 17, 8)))
  30.         $lang_lang = Number(Binary("0x" & StringMid($j, 25, 8)))
  31.         GUICtrlCreateLabel(StringFormat("%2i   %7i  %-19s", $y, $offset, $langtxt), 15, $x, 230, 20)
  32.         GUICtrlCreateLabel(StringFormat("%4i  %6i", $langcode, $lang_lang), 255, $x, 72, 20)
  33.         $y += 1
  34.         $x += 20
  35.         $z = 4 + $number * 16 + $offset + $langlen + $lang_lang
  36. Next
  37. GUICtrlCreateLabel(StringFormat("%7i", $z), 45, $x, 100, 20)
  38. GUISetState(@SW_SHOW, $hgui)
  39. While 1
  40.         Switch GUIGetMsg()
  41.                 Case -3
  42.                         ExitLoop
  43.         EndSwitch
  44. WEnd
  45. GUIDelete($hgui)

  46. Func _readbinary($file, $begin, $amount, $tf)
  47.         $ado_stream = ObjCreate("ADODB.Stream")
  48.         $ado_stream.type = 1
  49.         $ado_stream.open
  50.         $ado_stream.loadfromfile($file)
  51.         $ado_stream.position = $begin
  52.         $read = $ado_stream.read($amount)
  53.         $ado_stream.close
  54.         If $tf Then
  55.                 Return Number($read)
  56.         Else
  57.                 Return $read
  58.         EndIf
  59. EndFunc

  60. Func _abbreviation($text, $len)
  61.         If StringLen($text) > $len Then
  62.                 Return StringLeft($text, ($len - 6) / 2) & "..." & StringRight($text, ($len - 6) / 2)
  63.         Else
  64.                 Return $text
  65.         EndIf
  66. EndFunc

  67. Func _decode($expression, $flag)
  68.         Return BinaryToString(Binary($expression), $flag)
  69. EndFunc
复制代码
发表于 2019-11-27 10:54:49 | 显示全部楼层

好工具,学习中!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2019-12-10 02:43 , Processed in 0.062503 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表