Вы можете использовать эту dll, если ваша программа/проект полностью бесплатна. Если вы получаете какой-либо доход даже от пожертвований или рекламы, пожалуйста, поддержите меня.
Для полноценной работы моего оверлея вам понадобится 7z.dll, поэтому если у вас еще нет этого файла, вы можете скачать его оттуда: https://www.7-zip.org/
Параметры файла 7zOverlay.dll можно найти в файле справки 7-ZIP. 7zOverlay.dll использует те же параметры, что и файл 7z.exe. Я надеюсь, что переезд/изменение пройдет легко.
если вы не добавляете никаких параметров в 7zOverlay.dll, он возвращает справку о параметрах в выходном буфере и возвращает -1 (без параметров).
По умолчанию он загружает файл 7z.dll из местоположения 7zOverlay.dll, не имеет значения, вызываете ли вы 7zOverlay.dll из местоположения %tmp% или из вашего местоположения .exe. Но вы можете изменить местоположение файла 7z.dll с помощью функций Set7zDllPathFileA или Set7zDllPathFileW (пример ниже). Только перед любой из функций CommandFor7zipA или CommandFor7zipW вы можете изменить расположение файла 7z.dll. После загрузки файла 7z.dll функции изменения местоположения файла 7z.dll не работают.
Я тестировал 7zOverlay.dll с версиями 7z.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 (константные параметры: PAnsiChar; var OutputBuffer, ErrorsBuffer: PAnsiChar): Integer;
ЮНИКОД :
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 (константные параметры: PWideChar; var OutputBuffer, ErrorsBuffer: PWideChar): Integer;
Я также подготовил другие примеры использования других языков программирования, доступных для скачивания выше.
Ни один из примеров не включает файл 7zOverlay.dll, поэтому вам необходимо загрузить его отдельно и поместить в папку извлеченных примеров.
Здесь я делюсь только X86 (32-битной) версией этой dll для бесплатных программ, которая работает только с X86 (32-битной) сборкой 7z.dll. X64 (64-битная) сборка этой dll также доступна, о ее цене мы можем поговорить на моем патреоне или здесь в личных сообщениях (если есть).
Информация о сборке.
Этот 7zOverlay.dll был создан из исходного исходного кода 7-ZIP с использованием VisualStudio2015CE с некоторыми изменениями для использования его как dll, а не как программы командной строки. Итак, эта dll использует те же параметры, что и для программы командной строки 7-ZIP (7z.exe) — первый параметр (вход), и возвращает выходные сообщения в выходной буфер — второй параметр (выход) и все предупреждения. Сообщения /errors, которые он возвращает в буфере ошибок – третий параметр (выходной).
Короткая история проекта, можете пропустить, если вам не интересно.
Этот проект был начат уже давно. Вначале я создавал эту dll в старом Delphi с использованием JCL для 7-ZIP, это было довольно быстро, но JCL поддерживает не все архивы, как мне хотелось. Итак, я начал изменять исходный исходный код 7-ZIP, чтобы создать из него наложенную dll. Я не хотел создавать эту dll, как в некоторых других проектах, которые собирают эти dll с помощью текущей версии 7-ZIP. Да, эти dll(ы) из других проектов являются единичными и для работы не требуют оригинального 7z.dll, но вам нужно дождаться новой версии. С моей наложенной dll вы можете использовать любую версию 7-ZIP.