Manejo de Zip32.dll
Cómo comprimir en ZIP con Visual Basic
Fecha: 14/Dic/2000
Autor: "Eduardo Gonzalez" [email protected]
Publicado: 05/Sep/2001
Esto es un ejemplo de como utilizar vb para crear archivos .zip. Incluye la dll zip32.dll que es de libre distribución.
Si te parece interesante tambien te puedo enviar un tutorialito de como utilizarla.
Bueno ahora te dejo que tengo que investigar como se utiliza unzip32.dll (para hacer lo contrario, calro)
Saludos:
Eduardo
;-)
---xxx---
Existen muchas direcciones de donde bajarse la dll. Esta es sólo una de ellas:
ftp://ftp.info-zip.org/pub/infozip/WIN32/
Aqui te envío un pequeño tutorial que he hecho de como utilizarla.
Manejo de la librería de enlace dinámico ZIP32.dll
Por Eduardo González Muñiz
Tipos necesarios:
· Public Type ZIPuserfunctions
ZipPrntFunction As Long
ZipPasswordFunction As Long
ZipCommentFunction As Long
ZipServiceFunction As Long
End Type
· Public Type ZIPoptions
fSuffix As Long
fEncrypt As Long
fSystem As Long
fVolume As Long
fExtra As Long
fNoDirEntries As Long
fExcludeDate As Long
fIncludeDate As Long
fVerbose As Long
fQuiet As Long
fCRLF_LF As Long
fLF_CRLF As Long
fJunkDir As Long
fRecurse As Long
fGrow As Long
fForce As Long
fMove As Long
fDeleteEntries As Long
fUpdate As Long
fFreshen As Long
fJunkSFX As Long
fLatestTime As Long
fComment As Long
fOffsets As Long
fPrivilege As Long
fEncryption As Long
fRepair As Long
flevel As Byte
date As String ' 8 bytes long
szRootDir As String ' up to 256 bytes long
End Type
· Public Type ZIPnames
s(0 To 99) As String
End Type
· Public Type CBChar
ch(4096) As Byte
End Type
Declaración de funciones:
· Public Declare Function ZipInit Lib "zip32.dll" (ByRef Zipfun As
ZIPuserfunctions) As Long
· Private Declare Function ZipSetOptions Lib "zip32.dll" (ByRef Opts As ZIPoptions) As Long
· Private Declare Function ZipArchive Lib "zip32.dll" (ByVal argc As Long, ByVal funame As String, ByRef argv As ZIPnames) As Long
Existen además otras funciones que hacen referencia a los distintos tipos de encriptación.
· La estructura ZIPUSERFUNCTIONS:
Son las funciones a las que la dll lamará cuando quiera hacer determinadas acciones como mostrar mensajes, pedir password, etc
- ZipPrntFunction: Debe contener la dirección de memoria donde se encuentra la función a la que la dll llamará cuando vaya a mostrar un mensaje.
Esta función, rebirá como parametros un tipo cbchar (array de caracteres que componen el mensaje de la dll) por referencia, y un long, por valor, que indica el tamaño de la cadena recibida.
- ZipCommentFunction: Sirve para añadir un comentario al fichero Zip que se va ha crear, pero de momento lo dejamos.
- ZipPasswordFunction: Sirve para pedir un password al usuario en caso de que quiera hacer un Zip
- ZipServiceFunction: Pues la verdad es que no se para que sirve
Si no vamos a utilizar alguna de estas funciones, podemos introducir como valor &0.
· La estructura ZIPOPTIONS:
Son las distintas opciones que queremos que se apliquen a la hora de descomprimir el fichero Zip.
Las más importantes son:
- fEncrypt: Si deseamos que el fichero sea encriptado
- fSystem: Si deseamos que incluya archivos ocultos
- fVolume: Si deseamos que incluya la etiqueta de volumen
- fExtra: Si incluye o no los atributos de los archivos
- fNoDirEntries: Si en caso de que no exista el directorio del archivo, lo crea a
la hora de descomprimirlo
- fRecurse: Si incluye subdirectorios
- flevel: Nivel de compresión (lo más recomendable es usar siempre 0)
Existen bastantes más parametros para controlar fechas, y cosas así.
· La estructura ZIPNames:
Contiene los nombres (rutas completas) de los archivos a comprimir.
(Cada elemento del array es un fichero).
· Llamadas a las funciones:
Deben hacerse en este orden:
1- ZipInit: Se Pasa la estructura de punteros a funciones.
2 – ZipSetOptions: Se pasa la estructura de opciones.
2- ZipArchive: Es la función que realmente comienza a comprimir. Recibe como parámetros el numero de ficheros a comprimir, el nombre (ruta completa) del fichero a generar y el array que contiene los nombres de los ficheros a comprimir.
Todas las funciones retornan 1 si han ido correctamente y un codigo de error en caso contrario.
Fichero con el código de ejemplo (EjemploZipearVB.zip - 68.5 KB)