漢化方法:
- 下載或編譯一份 Qt Linguist 翻譯工具。
- 解壓壓縮包所有文件到程序目錄。
- 使用 Qt Linguist 開啟 lang 目錄下的 zh.ts
- 進行翻譯,記得保存。
- 通過 File -> Release 生成程序用的翻譯文件,重啟程序或重新選擇語言可以生效 (有一小部分文字需要重啟程序才能生效)
支持的 Simplify3D.exe 文件校驗(因為網(wǎng)上隨便下的,官網(wǎng)沒有提供試用鏈接,不知道是不是最新的)
- Simplify3D.exe
- MD5: 66a82f3fc1d6a9240c470ea698ab0b56
- SHA1: 736915002b781a6445ac430e4a315d0999a582c3
復(fù)制代碼 home.php?mod=space&uid=438454
補全缺失翻譯,下載后替換原始文件即可;也可以使用工具將新增部分合并過去
免 UAC 綠化程序:
軟件本身就是綠色版(除了設(shè)定寫出到注冊表),直接復(fù)制出來就能用。
外掛漢化開發(fā)包內(nèi)置了注冊表文件,但將其導(dǎo)入需要管理員權(quán)限;用 FASM 寫了個簡單的免 UAC 版。
程序是 QT 寫的,無殼,自校驗+啟動時檢測調(diào)試器,資源內(nèi)嵌(QT 打包,不懂解)。
觀察 QT 文檔,發(fā)現(xiàn)可以調(diào)用內(nèi)部 API 直接復(fù)制資源文件出來到文件系統(tǒng)。
于是就用 多行匯編 插件寫了段代碼插進去
- <$simplify3d.2CF3E8>
- @QString:
- <$simplify3d.2CF590>
- @QFile__Copy:
- <$simplify3d.2160AD>
- @start:
- ; 此處放置一個斷點
- lea rdx, [@src]
- lea rcx, [rbp+0x88]
- call [@QString]
- lea rdx, [@target]
- lea rcx, [rbp+0x80]
- call [@QString]
- lea rdx, [rbp+0x80] ; dest
- lea rcx, [rbp+0x88] ; src
- call [@QFile__Copy] ; QFile::Copy
- jmp @start
- @target:
- "./ja.qm\0"
- @src:
- ":/Resources/Translations/simplify3d_ja.qm\0"
復(fù)制代碼
然后點擊菜單的 Help -> Change Language 觸發(fā),依次提取不同語言的翻譯文件。
DLL 本來是打算用 version.dll 注入的,奈何注入時機有點晚,需要用戶手動重新選擇語言(有部分文字需要重啟生效),于是挑了個軟柿子:
把這個 DLL 引用(api-ms-...)改成自己的,然后自己也導(dǎo)出一份不同名字(但是要夠長)的 DLL:
- extern "C" __declspec(dllexport) size_t wcstombs_jixun(char* mbstr, wchar_t const* wcstr, size_t _MaxCount)
- {
- wcstombs_s(&_MaxCount, mbstr, _MaxCount, wcstr, _MaxCount);
- return _MaxCount;
- }
復(fù)制代碼
- 免運行時編譯(編譯選項 MT)不允許與這個函數(shù)重名
- 安全編譯選項不允許我引用 wcstombs 這個函數(shù)…
最后編譯完了,用十六進制編輯器尋找 wcstombs_jixun 文字然后把下劃線改成 00,強制更改函數(shù)名。
(其實還可以在 zlib.dll 里面把函數(shù)名改成別的… 但當(dāng)時沒想到所以算了)
然后就是將語言選擇的日語的字串引用修改成我的,沒什么技術(shù)含量,就不多說了…
|
|
你可能喜歡
拓竹Bambu Lab A1 mini測評:這臺3D打印機
變廢為寶:通過固相制造將鋁廢料轉(zhuǎn)化為3D打
新突破:基于聲波的3D打印技術(shù)——全息直聲
一篇帶你讀懂:金屬3D打印在航空航天領(lǐng)域的
推薦課程
神奇的3D打印
SLA3D打印工藝全套培訓(xùn)課程 - 軟件篇
3D打印月球燈視頻教程 包括完整貼圖建模流
【原創(chuàng)發(fā)布】Cura軟件修改二次開發(fā)定制視頻