Vous pouvez utiliser cette DLL si votre programme/projet est entièrement gratuit. Si vous recevez des revenus, même grâce à des dons ou des publicités, soutenez-moi.
Pour que mon overlay fonctionne pleinement, vous avez besoin du 7z.dll, donc si vous n'avez pas encore ce fichier, vous pouvez le télécharger depuis là : https://www.7-zip.org/
Les paramètres du fichier 7zOverlay.dll se trouvent dans le fichier d'aide 7-ZIP, le 7zOverlay.dll utilise les mêmes paramètres que le fichier 7z.exe. J'espère que le déménagement/changement sera facile.
si vous n'ajoutez aucun paramètre au 7zOverlay.dll, il renvoie l'aide des paramètres dans le tampon de sortie et renvoie -1 (sans paramètres).
Par défaut, il charge le fichier 7z.dll à partir de l'emplacement 7zOverlay.dll, peu importe si vous appelez 7zOverlay.dll depuis l'emplacement %tmp% ou depuis votre emplacement .exe. Mais vous pouvez modifier l'emplacement du fichier 7z.dll par les fonctions Set7zDllPathFileA ou Set7zDllPathFileW (exemple ci-dessous). Ce n'est qu'avant l'une des fonctions CommandFor7zipA ou CommandFor7zipW que vous pouvez modifier l'emplacement du fichier 7z.dll. Une fois le fichier 7z.dll chargé, les fonctions permettant de modifier l’emplacement du fichier 7z.dll ne fonctionnent pas.
J'ai testé le 7zOverlay.dll avec les versions 7z.dll de : 15.05, 16.04, 19.00, 20.00 Alpha et 20.01 alpha. Cela fonctionne bien.
Cette DLL contient quatre fonctions, deux pour les caractères ANSI (Set7zDllPathFileA, CommandFor7zipA) et deux pour les caractères UNICODE (Set7zDllPathFileW, CommandFor7zipW).
Deux exemples basiques d'utilisation, séparément pour l'encodage des caractères :
ANSI :
C++ : BOOL Set7zDllPathFileA(const char * FullPathToThe7zDLL);
Delphi : Set7zDllPathFileA (const FullPathToThe7zDLL : PAnsiChar) : BOOL ; appel standard ;
---
C++ : int CommandFor7zipA(const char * params, char * &OutputBuffer, char * &ErrorsBuffer);
Delphi : CommandFor7zipA (paramètres const : PAnsiChar ; var OutputBuffer, ErrorsBuffer : PAnsiChar) : Integer ;
UNICODE :
C++ : BOOL Set7zDllPathFileW(const wchar_t * FullPathToThe7zDLL);
Delphi : Set7zDllPathFileW (const FullPathToThe7zDLL : PWideChar) : BOOL ; appel standard ;
---
C++ : int CommandFor7zipW(const wchar_t * params, wchar_t * &OutputBuffer, wchar_t * &ErrorsBuffer);
Delphi : CommandFor7zipW (paramètres const : PWideChar ; var OutputBuffer, ErrorsBuffer : PWideChar) : Integer ;
J'ai également préparé d'autres exemples d'utilisation d'autres langages de programmation disponibles en téléchargement ci-dessus.
Tous les exemples n'incluent pas le fichier 7zOverlay.dll, vous devez donc le télécharger séparément et le placer à l'emplacement des exemples extraits.
Ici, je partage uniquement la version X86 (32 bits) de cette dll pour les programmes gratuits, qui fonctionne uniquement avec la version X86 (32 bits) du 7z.dll. La version X64 (64 bits) de cette dll est également disponible et nous pouvons parler de son prix sur mon patreon, ou ici dans des messages privés (si disponible).
Informations sur la construction.
Ce 7zOverlay.dll a été construit à partir de la source 7-ZIP originale en utilisant VisualStudio2015CE avec quelques modifications pour l'utiliser comme dll, mais pas comme programme de ligne de commande. Ainsi, cette DLL utilise les mêmes paramètres que ceux que vous avez utilisés pour le programme de ligne de commande 7-ZIP (7z.exe) - premier paramètre (entrée), et renvoie les messages de sortie au tampon de sortie - deuxième paramètre (sortie) et tous les avertissements /messages d'erreurs qu'il renvoie dans le tampon d'erreurs - troisième paramètre (sortie).
Courte histoire du projet, vous pouvez l'ignorer si vous n'êtes pas intéressé.
Ce projet a été lancé il y a longtemps. Au début j'ai créé cette dll dans l'ancien Delphi en utilisant le JCL pour 7-ZIP, c'était assez rapide, mais le JCL ne supporte pas toutes les archives comme je le voulais. J'ai donc commencé à modifier la source 7-ZIP d'origine pour créer la DLL superposée à partir de celle-ci. Je ne voulais pas créer cette DLL comme dans certains autres projets, qui construisent ces DLL avec la version actuelle de 7-ZIP. Oui, ces dll d'autres projets sont uniques et n'ont pas besoin du 7z.dll d'origine pour fonctionner, mais vous devez attendre la nouvelle version. Avec ma DLL superposée, vous pouvez utiliser n'importe quelle version de 7-ZIP.