開發小工具(如「大檔案切割機」)後,若能整合至 Windows 檔案總管右鍵選單,使用者即可對任意檔案右鍵直接啟動工具,極大提升便利性。本文示範如何透過登錄表 HKEY_CLASSES_ROOT 實現「右鍵呼之即來,揮之即去」。
在 HKEY_CLASSES_ROOT\*\shell\YourCommand 建立鍵值:
& 指定熱鍵)。command 預設值 = 執行命令(含 %1 代表被右鍵點選的檔案完整路徑)。uses Registry;
procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;
{ 建立主鍵:\*\shell\cutbig }
if Reg.OpenKey('\*\shell\cutbig', True) then
begin
Reg.WriteString('', '切割與組裝(&K)'); { 選單文字 }
Reg.CloseKey;
end;
{ 建立命令子鍵:\*\shell\cutbig\command }
if Reg.OpenKey('\*\shell\cutbig\command', True) then
begin
{ %1 會被檔案總管替換為實際檔案路徑 }
Reg.WriteString('', 'C:\Delphi\MyProgram.exe "%1"');
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;
{ DeleteKey 會遞刪除子鍵,若鍵不存在不會報錯 }
Reg.DeleteKey('\*\shell\cutbig');
finally
Reg.Free;
end;
end;
若僅針對 .txt、.jpg 等特定類型:
Reg.RootKey := HKEY_CLASSES_ROOT;
if Reg.OpenKey('.txt\shell\cutbig', True) then ... { 僅 txt 檔出現 }
if Reg.OpenKey('SystemFileAssociations\.jpg\shell\cutbig', True) then ... { Win7+ 建議方式 }
HKEY_CLASSES_ROOT 需管理員權限,建議在安裝程式(Inno Setup/NSIS)或應用程式 Manifest 中宣告 requireAdministrator。"C:\My Tools\Cut.exe" "%1"。HKEY_CURRENT_USER\Software\Classes\VirtualStore,導致右鍵選單不顯示。登錄表方式屬「舊式關聯」,功能受限。專業級整合請開發 COM Shell Extension(實作 IContextMenu/IShellExtInit),可動態決定選單項目、圖示、狀態,支援多檔拖放、子選單等豐富互動。Delphi 可使用 TShellFolder、TShellContextMenu 或第三方庫(如 ShellExtensions)快速開發。
幾行登錄表代碼即可讓你的 Delphi 小工具融入 Windows 檔案操作流程,是提升軟體專業度與使用者黏著度的高 CP 值技巧。掌握 TRegistry 操作,也為日後開發安裝程式、系統工具奠定基礎。