Resource Hacker 是一套在 Windows 開發圈非常出名的免費「資源編輯」工具。
簡單來說,Windows 的 .exe(執行檔)或 .dll(動態連結庫)檔案,就像是一個打包好的罐頭。裡面除了有程式碼,還裝了許多「素材」,而 Resource Hacker 就是用來強行打開這個罐頭,修改裡面素材的工具。
它具體能幹嘛?
1. 提取(拿出來)
你可以打開 SHELL32.dll 或 imageres.dll,把裡面的小圖示(Icons)、滑鼠游標(Cursors)、甚至背景圖片一張張抓出來,存成 .ico 或 .bmp 檔,好讓你在 dBASE 程式裡使用。
2. 修改(換掉它)
你可以把某個 .exe 程式的圖示換成你喜歡的圖片。例如,把你自己寫的 dBASE 程式編譯成 .exe 後,如果覺得預設圖示很醜,可以用它直接把 .exe 裡的圖示換掉。
3. 中文化(改文字)
很多國外的軟體選單、對話框裡的文字(例如 “OK”, “Cancel”, “File”)都存放在「String Table」資源裡。你可以用 Resource Hacker 把這些英文改成中文,儲存後程式就變成中文版了。
4. 查看隱藏資訊
它可以讓你看到程式的「Manifest」(宣告文件),了解這個程式需要什麼權限、支援哪些 Windows 版本。
Resource Hacker 的主畫面長這樣:
如何使用它來找 SHELL32.dll 的圖示?
-
開啟檔案:執行 Resource Hacker,點選
File->Open,路徑指向C:\Windows\System32\shell32.dll。 -
瀏覽資源:在左側的資料夾樹狀圖中,找到 “Icon” 或 “Icon Group”。
-
查看內容:點開資料夾,點擊裡面的編號(例如 1, 2, 3…),右側就會顯示該編號對應的圖示。
-
匯出圖示:在你喜歡的圖示編號上按右鍵,選擇
Save [Icon] resource to a .ico file。
為什麼 dBASE 開發者需要它?
既然你在寫 dBASE 2019,這個工具對你很有幫助:
-
美化介面:你可以從 Windows 系統檔案裡偷一些漂亮的高清圖示。
-
修改成品:dBASE 編譯出來的執行檔,有時你想自定義一些系統資訊(如版本號、公司名稱),如果 dBASE 內建設定改不掉,可以用 Resource Hacker 強制修改。
警告:
-
修改系統檔案(如
SHELL32.dll)非常危險,可能導致 Windows 崩潰。通常我們只「提取」資源,不要「儲存修改」系統檔。 -
修改別人的
.exe可能會違反授權協議,僅限自己練習使用喔!
你想知道哪裡可以下載到這個工具,或者需要我示範怎麼用它改掉你 dBASE 程式的圖示嗎?
沒問題!我們來寫一段完整的代碼,將 ShellExecute 綁定在一個按鈕的 onClick 事件中。
這段代碼會建立一個簡單的表單,裡面有一個按鈕,點擊後會直接跳轉到 Windows 的「設定」畫面。
完整的 dBASE Plus 代碼範例
你可以將以下代碼複製並儲存為 .wfm 檔案執行:
程式碼片段
// 1. 宣告 API (放在最前面)
if type("ShellExecute") # "FP"
extern CLONG ShellExecute(CLONG, CSTRING, CSTRING, CSTRING, CSTRING, CINT) ;
SHELL32 FROM "ShellExecuteA"
endif
** END HEADER -- do not remove this line
// 2. 定義表單
define class MySettingsForm of FORM
with (this)
height = 10
width = 40
text = "Windows 設定啟動器"
autoCenter = .t.
endwith
// 3. 定義按鈕
this.MYBUTTON = new PUSHBUTTON(this)
with (this.MYBUTTON)
height = 2
width = 25
left = 7
top = 4
text = "開啟 Windows 設定"
// 綁定 onClick 事件
onClick = class::OPEN_SETTINGS
endwith
// 4. 定義按下按鈕要執行的動作
function OPEN_SETTINGS
// 呼叫我們剛剛 extern 進來的 API
ShellExecute(0, "open", "ms-settings:", 0, 0, 1)
return
endclass
// 5. 執行表單
f = new MySettingsForm()
f.open()
代碼重點解析:
-
extern的位置:通常放在檔案的最頂部(Header 部分),這樣整個程式隨時都能呼叫它。 -
ms-settings::這是 Windows 10/11 的通訊協定路徑。-
如果你想改成開啟顯示設定,就把
"ms-settings:"改成"ms-settings:display"。 -
如果你想改成開啟 Google 網頁,就改成
"https://www.google.com"。
-
-
ShellExecute的參數:-
第一個
0:代表父視窗控制柄(Handle)。 -
"open":執行的動作。 -
最後一個
1:代表視窗顯示方式(Normal Focus)。
-
進階練習:如果您想開啟「控制台」
如果您習慣用舊版的控制台,可以把 ShellExecute 那一行換成:
程式碼片段
ShellExecute(0, "open", "control.exe", 0, 0, 1)
下一步建議:
你想試試看增加另一個按鈕來開啟 Resource Hacker 嗎?如果你已經下載並安裝了它,我們可以寫一個按鈕直接啟動該工具:
程式碼片段
// 假設 Resource Hacker 裝在 C:\Program Files (x86)\Resource Hacker\ResourceHacker.exe
ShellExecute(0, "open", "C:\Program Files (x86)\Resource Hacker\ResourceHacker.e