Você pode usar esta dll se o seu programa/projeto for totalmente gratuito. Se você obtiver alguma renda, mesmo com doações ou anúncios, por favor, me apoie.
Para que meu overlay funcione totalmente, você precisa do 7z.dll, então se você ainda não tem esse arquivo, pode baixá-lo lá: https://www.7-zip.org/
Os parâmetros para o arquivo 7zOverlay.dll podem ser encontrados no arquivo de ajuda do 7-ZIP, o 7zOverlay.dll usa os mesmos parâmetros do arquivo 7z.exe. Espero que a mudança/mudança seja fácil.
se você não adicionar nenhum parâmetro ao 7zOverlay.dll, ele retornará a ajuda dos parâmetros no buffer de saída e retornará -1 (sem parâmetros).
Por padrão, ele carrega o arquivo 7z.dll do local 7zOverlay.dll, não importa se você chama 7zOverlay.dll do local% tmp% ou do local .exe. Porém, você pode alterar a localização do arquivo 7z.dll pelas funções Set7zDllPathFileA ou Set7zDllPathFileW (exemplo abaixo). Somente antes de qualquer uma das funções CommandFor7zipA ou CommandFor7zipW você pode alterar a localização do arquivo 7z.dll. Depois que o arquivo 7z.dll é carregado, as funções para alterar a localização do arquivo 7z.dll não funcionam.
Testei o 7zOverlay.dll com as versões 7z.dll de: 15.05, 16.04, 19.00, 20.00 Alpha e 20.01 Alpha. Funciona bem.
Esta dll contém quatro funções, duas para caracteres ANSI (Set7zDllPathFileA, CommandFor7zipA) e duas para caracteres UNICODE (Set7zDllPathFileW, CommandFor7zipW).
Dois exemplos básicos de uso, separadamente para codificação de caracteres:
ANSI :
C++: BOOL Set7zDllPathFileA(const char * FullPathToThe7zDLL);
Delphi: Set7zDllPathFileA(const FullPathToThe7zDLL: PAnsiChar): BOOL; chamada padrão;
---
C++: int CommandFor7zipA(const char * params, char * &OutputBuffer, char * &ErrorsBuffer);
Delphi: CommandFor7zipA (parâmetros const: PAnsiChar; var OutputBuffer, ErrosBuffer: PAnsiChar): Integer;
UNICÓDIGO :
C++: BOOL Set7zDllPathFileW(const wchar_t * FullPathToThe7zDLL);
Delphi: Set7zDllPathFileW(const FullPathToThe7zDLL: PWideChar): BOOL; chamada padrão;
---
C++: int CommandFor7zipW(const wchar_t * params, wchar_t * &OutputBuffer, wchar_t * &ErrorsBuffer);
Delphi: CommandFor7zipW (parâmetros const: PWideChar; var OutputBuffer, ErrosBuffer: PWideChar): Integer;
Também preparei outros exemplos de uso para outras linguagens de programação disponíveis para download acima.
Nenhum exemplo inclui o 7zOverlay.dll, então você precisa baixá-lo separadamente e colocá-lo no local do(s) exemplo(s) extraído(s).
Aqui compartilho apenas a versão X86 (32 bits) desta dll para programas gratuitos, que funciona apenas com a versão X86 (32 bits) do 7z.dll. A versão X64 (64 bits) desta dll também está disponível e podemos conversar sobre seu preço no meu patreon, ou aqui em mensagens privadas (se disponível).
Construa informações.
Este 7zOverlay.dll foi construído a partir da fonte 7-ZIP original usando VisualStudio2015CE com algumas modificações para usá-lo como dll, mas não como programa de linha de comando. Portanto, esta dll usa os mesmos parâmetros que você usou para o programa de linha de comando 7-ZIP (7z.exe) - primeiro parâmetro (entrada) e retorna as mensagens de saída para o buffer de saída - segundo parâmetro (saída) e todos os avisos /errors mensagens que ele retorna no buffer de erros - terceiro parâmetro (saída).
Breve história do projeto, você pode ignorá-la, se não estiver interessado.
Este projeto foi iniciado há muito tempo. No começo criei essa dll no Delphi antigo com uso da JCL para 7-ZIP, era bem rápido, mas a JCL não suporta todos os arquivos como eu queria. Então, comecei a modificar a fonte 7-ZIP original para criar a dll sobreposta a partir dela. Eu não queria criar esta dll como em alguns outros projetos, que constrói essas dll(s) com a versão atual do 7-ZIP. Sim, essas dll(s) de outros projetos são únicas e não precisam do 7z.dll original para funcionar, mas você precisa esperar pela nova versão. Com minha dll sobreposta você pode usar qualquer versão do 7-ZIP.