Newsgroup: it.comp.lang.visual-basic
Titolo: Winzip & VB

Saludos amigo!
Ritorno su un problema che avevo già esposto:
come compattare uno o più file presenti in una data directory,
da VB utilizzando Winzip.
Necessito di usare Winzip da VB.
Qualcuno consce qualche info pratica?
GRAZIE



Mi sembra che sia possibile lanciare WINZIP32.EXE con qualche
parametro, ma non ho il tempo di fare prove....
Sorry.
Ciao, Aran

 >GRAZIE
Ricavane tu qualcosa dal mio Progetto:
###    Form1 : ######
Option Explicit
Private Sub CmdEsegui_click()
With Opzione
    .Azione = CboAzione.ListIndex + 1
    .Compressione = CboCompressione.ListIndex + 1
    .Opzioni = CheckOpzione.Tag
    .PassWord = 1
    .ValorePassword = CStr(TxtPassword.Text)
    .TipoFile = CheckFile.Tag
    .Verifica = CheckVerifica.Tag
End With
Call Winzip.Winzip(TxTFile.Text, TxtZipFile.Text, CboSelezione.ListIndex)
End Sub
Private Sub CmdFile_click()
On Error Resume Next
Dim Dialogo As New cCommonDialog
With Dialogo
    .CancellaErrore = True
    .Filtro = "Tutti i File (*.*)|*.*"
    .DefaultExt = "*.*"
    .TitoloDialogo = "Ricercare un file per " & CboAzione.Text
    .FolderIniziale = "c:\"
    .NomeFile = "*.*"
    .MostraApri
TxTFile.Text = Dialogo.NomeFile
End With
Set Dialogo = Nothing
End Sub
Private Sub CmdWinzipFile_click()
On Error Resume Next
Dim Dialogo As New cCommonDialog
With Dialogo
    .CancellaErrore = True
    .Filtro = "Winzip File(*.zip)|*.zip"
    .DefaultExt = "*.zip"
    .TitoloDialogo = "Ricercare un file per " & CboAzione.Text
    .FolderIniziale = "c:\"
    .NomeFile = "*.zip"
    .MostraSalva
TxtZipFile.Text = Dialogo.NomeFile
End With
Set Dialogo = Nothing
End Sub
Private Sub Form_Load()
With CboAzione
    .AddItem "- Aggiungi Archivio"
    .AddItem "- Estrai Archivio"
    .AddItem "- Freshen Archivio"
    .AddItem "- Aggiorna Archivio"
    .AddItem "- Muovi Archivio"
    .AddItem "- Elimina Archivio"
    .AddItem "- Visualizza Archivio"
    .ListIndex = 0
End With
With CboCompressione
        .AddItem "- Alta"
        .AddItem "- Normale"
        .AddItem "- Bassa"
        .AddItem "- Media"
        .ListIndex = 1
End With
With CboSelezione
    .AddItem "- File"
    .AddItem "- Directory"
    .ListIndex = 0
End With
TxTFile.Text = App.Path & "Test.txt"
TxtZipFile.Text = App.Path & "Test.zip"
TxtPassword.Text = "Thrix"
With Opzione
    .Azione = Aggiungi_Archivio
    .Compressione = CboCompressione.ListIndex + 1
    .Opzioni = CheckOpzione.Tag
    .PassWord = 1
    .ValorePassword = CStr(TxtPassword.Text)
    .TipoFile = CheckFile.Tag
    .Verifica = CheckVerifica.Tag
End With
End Sub
#######     Modulo1 : ##########
Option Explicit
Public Opzione As Opzioni_Winzip
    Public Type Opzioni_Winzip
        Azione As AzioneWinzip
        Opzioni As OpzioneWinzip
        Compressione As CompressioneWinzip
        PassWord As String
        ValorePassword As String
        TipoFile As TipoFileWinzip
        Verifica As VerificaWinzipFile
    End Type
    Public Enum AzioneWinzip
        Aggiungi_Archivio = 1
        Estrai_Archivio = 2
        Freshen_Archivio = 3
        Aggiorna_Archivio = 4
        Muovi_Archivio = 5
        Visualizza_Archivio = 6
    End Enum
    Public Enum OpzioneWinzip
        Includi_Sottocartelle = 1
        Salva_PathExtraInfo = 2
    End Enum
    Public Enum CompressioneWinzip
        Nessuna = 1
        Alta = 2
        Normale = 3
        Media = 4
        Bassa = 5
    End Enum
    Public Enum PasswordWinzip
        PassWord = 1
    End Enum
    Public Enum TipoFileWinzip
        FileNascosti = 1
        NoFileNascosti = 2
    End Enum
    Public Enum VerificaWinzipFile
        SovraScriviFile = 1
        NonSovraScrivere = 1
    End Enum
Function RimuoviSpaziFinali(ByVal Stringa As String) As String
        Dim ZeroPos As Integer
    ZeroPos = InStr(Stringa, Chr$(0))
    If ZeroPos > 0 Then
        RimuoviSpaziFinali = Left$(Stringa, ZeroPos - 1)
    Else
        RimuoviSpaziFinali = Stringa
    End If
End Function
#### Modulo2 ##########
Option Explicit
Private Enum Verifica_FileDirectory
    Directory = 1
    File = 2
End Enum
Public Function Winzip(ByRef FileDirectory As String, ByRef WinzipFile As
String, ByRef Tipo As Long, Optional ByRef PassWord As String) As String
    Dim VerificaFile As Boolean
    Dim VerificaNome As String
'    VerificaFile = VerificaEsistenza(FileDirectory, File)
'    With Opzione
'        If VerificaFile = True Then
'            Select Case .Verifica
'                Case 0: GoTo Esci
'                Case 1: Kill WinzipFile
'                Case 2: GoTo Esci
'                Case Else: GoTo Esci
'            End Select
'         End If
'    End With
    Select Case Tipo
    Case 0
        VerificaFile = VerificaEsistenza(FileDirectory, File)
             If VerificaFile = False Then GoTo Esci:
                Call AvviaWinZip(FileDirectory, WinzipFile, Tipo)
        VerificaNome = RilevaNome(WinzipFile)
    Case 1
        VerificaFile = VerificaEsistenza(FileDirectory, Directory)
       '     If VerificaFile = False Then GoTo Esci:
                Call AvviaWinZip(FileDirectory, WinzipFile, Tipo)
        VerificaNome = RilevaNome(WinzipFile)
        End Select
Exit Function
Esci:
    MsgBox "Operazione Annullata", vbCritical
End Function
Private Function VerificaEsistenza(File_Directory As String, Conferma As
Verifica_FileDirectory) As Boolean
    Select Case Conferma
        Case 1:
                If Right(File_Directory, 1) <> "\" Then
                    File_Directory = File_Directory & "\"
                    VerificaEsistenza = (Dir(File_Directory) <> "")
                End If
        Case 2:
                VerificaEsistenza = (Dir(File_Directory) <> "")
    End Select
End Function
Private Function RilevaNome(Nome As String) As String
    If Mid(Nome, 2, 2) = ":\" Then
        RilevaNome = Trim(Mid(Nome, 4))
    End If
End Function
Private Function AvviaWinZip(ByRef FileDirectory As String, ByRef WinzipFile
As String, ByRef Tipo As Long) As Long
    Dim LineaDiComando As String
Select Case Tipo
Case 0 ' File
    LineaDiComando = RilevaOpzioni
        Shell "D:\Programmi\Winzip\Winzip32.exe" & LineaDiComando &
WinzipFile & " " & FileDirectory, vbHide
Debug.Print LineaDiComando & WinzipFile & " " & FileDirectory
Case 1 ' Directory
    LineaDiComando = RilevaOpzioni
        Shell "D:\Programmi\Winzip\Winzip32.exe" & LineaDiComando &
WinzipFile & " " & FileDirectory & "\*.*", vbHide
Debug.Print LineaDiComando & WinzipFile & " " & FileDirectory
End Select
End Function
Private Function RilevaOpzioni() As String
    Dim NuovaLineaDiComando As String
    With Opzione
        Select Case .Azione
            Case 0, 1: NuovaLineaDiComando = "-a"
            Case 2: NuovaLineaDiComando = "-e -o -j"
            Case 3: NuovaLineaDiComando = "-f"
            Case 4: NuovaLineaDiComando = "-u"
            Case Else: NuovaLineaDiComando = "-a"
        End Select
        Select Case .Compressione
            Case 1: NuovaLineaDiComando = NuovaLineaDiComando & " -e0"
'nessuna
            Case 2: NuovaLineaDiComando = NuovaLineaDiComando & " -ex" 'alta
            Case 3: NuovaLineaDiComando = NuovaLineaDiComando & " -en"
'Normale
            Case 4: NuovaLineaDiComando = NuovaLineaDiComando & " -ef"
'Media
            Case 5: NuovaLineaDiComando = NuovaLineaDiComando & " -es"
'Bassa
            Case Else: NuovaLineaDiComando = NuovaLineaDiComando & " -en"
        End Select
        Select Case .Verifica
            Case 0, 1: NuovaLineaDiComando = NuovaLineaDiComando & " -hs"
            Case Else: NuovaLineaDiComando = NuovaLineaDiComando & " -hs"
        End Select
        Select Case .Opzioni
            Case 0: NuovaLineaDiComando = NuovaLineaDiComando & " -r"
'(Default)
            Case 1: NuovaLineaDiComando = NuovaLineaDiComando & " -r"
'Tutte le Sottodirectory
            Case 2: NuovaLineaDiComando = NuovaLineaDiComando & " -p"
'Salva_Extra_Directory_Info
            Case Else: NuovaLineaDiComando = NuovaLineaDiComando & " -r"
        End Select
        Select Case .PassWord
            Case 0:
            Case 1: NuovaLineaDiComando = NuovaLineaDiComando & " -s" &
.ValorePassword
            Case Else:
        End Select
    End With
    RilevaOpzioni = " " & NuovaLineaDiComando & " "
End Function
spero ti basti come esempio
By Utente Win2k