Puede utilizar esta DLL si su programa/proyecto es completamente gratuito. Si obtiene algún ingreso, incluso de donaciones o anuncios, por favor apóyeme.
Para que mi superposición funcione completamente, necesitas 7z.dll, así que si aún no tienes este archivo, puedes descargarlo desde allí: https://www.7-zip.org/
Los parámetros para el archivo 7zOverlay.dll se pueden encontrar en el archivo de ayuda 7-ZIP, 7zOverlay.dll utiliza los mismos parámetros que el archivo 7z.exe. Espero que la mudanza/cambio sea fácil.
Si no agrega ningún parámetro a 7zOverlay.dll, devuelve ayuda de los parámetros en el búfer de salida y devuelve -1 (sin parámetros).
De forma predeterminada, carga el archivo 7z.dll desde la ubicación 7zOverlay.dll, no importa si llama a 7zOverlay.dll desde la ubicación %tmp% o desde su ubicación .exe. Pero puede cambiar la ubicación del archivo 7z.dll mediante las funciones Set7zDllPathFileA o Set7zDllPathFileW (ejemplo a continuación). Sólo antes de cualquiera de las funciones CommandFor7zipA o CommandFor7zipW puede cambiar la ubicación del archivo 7z.dll. Después de cargar el archivo 7z.dll, las funciones para cambiar la ubicación del archivo 7z.dll no funcionan.
Probé 7zOverlay.dll con las versiones 7z.dll de: 15.05, 16.04, 19.00, 20.00 Alpha y 20.01 alpha. Funciona bien.
Este dll contiene cuatro funciones, dos para caracteres ANSI (Set7zDllPathFileA, CommandFor7zipA) y dos para caracteres UNICODE (Set7zDllPathFileW, CommandFor7zipW).
Dos ejemplos básicos de uso, por separado para la codificación de caracteres:
ANSI :
C++: BOOL Set7zDllPathFileA(const char * FullPathToThe7zDLL);
Delphi: Set7zDllPathFileA(const FullPathToThe7zDLL: PAnsiChar): BOOL; llamada estándar;
---
C++: int CommandFor7zipA(const char * params, char * &OutputBuffer, char * &ErrorsBuffer);
Delphi: CommandFor7zipA (parámetros constantes: PAnsiChar; var OutputBuffer, ErrorsBuffer: PAnsiChar): entero;
UNICODIO :
C++: BOOL Set7zDllPathFileW(const wchar_t * FullPathToThe7zDLL);
Delphi: Set7zDllPathFileW(const FullPathToThe7zDLL: PWideChar): BOOL; llamada estándar;
---
C++: int CommandFor7zipW(const wchar_t * params, wchar_t * &OutputBuffer, wchar_t * &ErrorsBuffer);
Delphi: CommandFor7zipW (parámetros constantes: PWideChar; var OutputBuffer, ErrorsBuffer: PWideChar): entero;
También preparé otros ejemplos de uso para otros lenguajes de programación disponibles para descargar arriba.
Ningún ejemplo incluye 7zOverlay.dll, por lo que debe descargarlo por separado y colocarlo en la ubicación de los ejemplos extraídos.
Aquí comparto solo la versión X86 (32 bits) de este dll para programas gratuitos, que funciona solo con la compilación X86 (32 bits) de 7z.dll. La versión X64 (64 bits) de este dll también está disponible y podemos hablar sobre su precio en mi patreon o aquí en mensajes privados (si está disponible).
Información de construcción.
Este 7zOverlay.dll se creó a partir de la fuente original 7-ZIP usando VisualStudio2015CE con algunas modificaciones para usarlo como dll, pero no como programa de línea de comandos. Entonces, este dll usa los mismos parámetros que usó para el programa de línea de comando 7-ZIP (7z.exe): primer parámetro (entrada) y devuelve los mensajes de salida al búfer de salida: segundo parámetro (salida) y todas las advertencias. /mensajes de errores que devuelve en el búfer de errores - tercer parámetro (salida).
Breve historia del proyecto, puedes omitirla si no estás interesado.
Este proyecto se inició hace mucho tiempo. Al principio creé este dll en el antiguo Delphi con el uso de JCL para 7-ZIP, fue bastante rápido, pero JCL no admite todos los archivos como quería. Entonces, comencé a modificar la fuente original de 7-ZIP para crear la DLL superpuesta a partir de ella. No quería crear este dll como en otros proyectos, que compila estos dll con la versión actual de 7-ZIP. Sí, estos DLL de otros proyectos son únicos y no necesitan el 7z.dll original para funcionar, pero hay que esperar a que llegue la nueva versión. Con mi dll superpuesto puedes usar cualquier versión de 7-ZIP.