[VB6] – Unzip di files SENZA librerie esterne

Problema: decomprimere (unzippare) un file zip in Visual Basic 6 senza l’utilizzo di librerie esterne

Soluzione:
Sostanzialmente la soluzione semplice, basta invocare la shell ed utilizzare il supporto del sistema operativo (il codice funziona sicuramente su Windows xp e superiori, ma non ho testato su altri sistemi operativi, magari ditelo voi se su sistemi operativi pi vecchi funziona); ma vediamo passo passo quello che c’ da fare.

1. Inserire il riferimento a (men: Progetto -> Riferimenti) Microsoft Shell Controls and Automation

2. Inserire la seguente routine dove vi pare:

Public Sub unzip()
Dim nomefile As String
Dim nomedir As String

Dim ClasseShell As Shell32Ctl.Shell
Dim FileDaUnzip As Shell32Ctl.Folder
Dim DestUnzip As Shell32Ctl.Folder
Dim CopiaUnzip As Shell32Ctl.FolderItems

nomefile = “C:\temp\file.zip”
nomedir = “C:\temp”

Set ClasseShell = New Shell32Ctl.Shell
‘ file da unzippare
Set FileDaUnzip = ClasseShell.NameSpace(nomefile)
‘ directory out
Set DestUnzip = ClasseShell.NameSpace(nomedir)
‘ esecuzione della copia
Set CopiaUnzip = FileDaUnzip.Items

Call DestUnzip.CopyHere(CopiaUnzip, 20)

End Sub

Bene ecco le opzioni di CopyHere:
0 Default. Nessuna opzione specificata.
4 Non mostra il box con la barra di progressione.
8 Rinomina il file di destinazione se il esiste un file con lo stesso nome nella directory di destinazione.
16 Clicca “Yes to All” in qualsiasi finestra di dialogo che viene mostrata.
64 Mantieni le informazioni, se possibile.
128 Esegui le operazioni solo se viene specificata una wildcard (*.*).
256 Mostra una finestra di dialogo con la progress bar ma senza mostrare i nomi dei file.
512 Non confermare la creazione di una nuova directory se l’operazione ne richiede la creazione.
1024 Non mostrare un’interfaccia utente se si verifica un errore.
4096 Disabilita la ricorsione.
9182 Non copiare i file collegati come un gruppo. Copia solo i file specificati.

Commenti

commenti

Lascia un commento