如果您的程式/項目完全免費,您可以使用此 dll。如果您透過捐贈或廣告獲得任何收入,請支持我。
為了使我的疊加層充分工作,您需要 7z.dll,因此如果您還沒有此文件,您可以從那裡下載它:https://www.7-zip.org/
7zOverlay.dll 檔案的參數可以在 7-ZIP 幫助文件中找到,7zOverlay.dll 使用與 7z.exe 檔案相同的參數。我希望搬家/改變會很容易。
如果你沒有在7zOverlay.dll中加入任何參數,它會回傳輸出緩衝區中參數的幫助,並且回傳-1(不含參數)。
預設情況下,它從 7zOverlay.dll 位置加載 7z.dll 文件,無論您是從 %tmp% 位置還是從 .exe 位置調用 7zOverlay.dll 都沒有關係。但是,您可以透過函數Set7zDllPathFileA或Set7zDllPathFileW變更 7z.dll 檔案位置(範例如下)。僅在使用CommandFor7zipA或CommandFor7zipW任何函數之前,您才能變更 7z.dll 檔案位置。載入 7z.dll 檔案後,更改 7z.dll 檔案位置的功能不起作用。
我使用 7z.dll 版本測試了 7zOverlay.dll:15.05、16.04、19.00、20.00 Alpha 和 20.01 alpha。效果很好。
此 dll 包含四個函數,兩個用於ANSI (Set7zDllPathFileA、CommandFor7zipA)字符,兩個用於UNICODE (Set7zDllPathFileW、CommandFor7zipW)字元。
兩個基本的使用範例,分別用於字元編碼:
美國國家標準協會:
C++: BOOL Set7zDllPathFileA(const char * FullPathToThe7zDLL);
Delphi: Set7zDllPathFileA(const FullPathToThe7zDLL: PAnsiChar): BOOL;標準調用;
---
C++: int CommandFor7zipA(const char * params, char * &OutputBuffer, char * &ErrorsBuffer);
Delphi: CommandFor7zipA(const params: PAnsiChar; var OutputBuffer, ErrorsBuffer: PAnsiChar): 整數;
統一碼:
C++: BOOL Set7zDllPathFileW(const wchar_t * FullPathToThe7zDLL);
Delphi: Set7zDllPathFileW(const FullPathToThe7zDLL: PWideChar): BOOL;標準調用;
---
C++: int CommandFor7zipW(const wchar_t * params, wchar_t * &OutputBuffer, wchar_t * &ErrorsBuffer);
Delphi: CommandFor7zipW(const params: PWideChar; var OutputBuffer, ErrorsBuffer: PWideChar): Integer;
我還準備了其他程式語言的使用範例,可以在上面下載。
任何範例都不包含 7zOverlay.dll,因此您需要單獨下載它並將其放置在提取的範例位置中。
在這裡,我僅向免費程式分享此 dll 的 X86(32 位元)版本,它僅適用於 7z.dll 的 X86(32 位元)版本。該 dll 的 X64(64 位元)版本也可用,我們可以在我的 patreon 上討論它的價格,或在私人訊息中(如果有的話)。
建構資訊。
此 7zOverlay.dll 是使用 VisualStudio2015CE 從原始 7-ZIP 來源建置的,並進行了一些修改以將其用作 dll,但不用作命令列程式。因此,該 dll 使用與 7-ZIP 命令列程式 (7z.exe) 相同的參數 - 第一個參數(輸入),並將輸出訊息傳回輸出緩衝區 - 第二個參數(輸出)和所有警告/ errors 它在錯誤緩衝區中傳回的訊息- 第三個參數(輸出)。
專案故事很短,不感興趣的可以跳過。
這個專案很久以前就開始了。一開始,我在舊的 Delphi 中使用 JCL for 7-ZIP 建立了這個 dll,速度相當快,但 JCL 並不支援我想要的所有檔案。因此,我開始修改原始 7-ZIP 原始程式碼以從中建立覆蓋的 dll。我不想像其他一些專案一樣創建這個 dll,它使用當前版本的 7-ZIP 來建立這些 dll。是的,來自其他項目的這些 dll 是單一的,不需要原始的 7z.dll 即可工作,但您需要等待新版本。透過我的覆蓋 dll,您可以使用任何版本的 7-ZIP。