Newsgroup: it.comp.lang.visual-basic
Titolo: ZIP e UNZIP

Visto che mi è stato chiesto preciso come uso ZIP.EXE e UNZIP.EXE
<1> Dove trovarli:
scaricate da VolFpt (
http://volftp.mondadori.com/
) oppure da qualche
altra parte il pacchetto freezip.exe (attenzione: la versione 1.4.8
non la 2.2.2 che non conosco e di cui non posso garantire nulla). NON
ISTALLATE IL PRODOTTO, ma apritelo con WinZip, trovere anche i due
file ZIP.EXE e UNZIP.EXE, quelli che servono. 
P.S. Nessuno vi impedisce di installare FreeZip, che, se ben ricordo,
aggiunge delle opzioni al menu contestuale che permette di
comprimere/decomprimere file ZIP
<2> Per lanciarli da VB:
Io in alcuni programmi li lancio con una semplice SHELL (è possibile
usare il parametro vbHide, che non visualizza la finestra. In questo
caso però VB non aspetta che il programma sia terminato. Per lanciate
"e aspettare" basta utilizzare una funzione opportuna; una di esse
l'ho vista sul sito comune (OpenAndWait.zip), mentre io ne uso
un'altra che funziona diversamente, ma ottiene lo stesso risultato (la
allego: shell.bas)
<3> Parametri per l'uso di ZIP:
Non è semplicissimo usarlo, ma con qualche "trigo" ce l'ho sempre
fatta ...
* anzitutto bisogna posizionarsi sulla cartella dove c'è il/i file da
zippare, (
(con la mia funzione LanciaEdAttendi è possibile fissare la cartella
di lavoro; è sempre possibile sistemare il comando in un file BAT che
cominci con cd\cartella1).
Poi lanciare:
	ZIP nomefilezip *.* (tutti i file)
	ZIP nomefilezip prova.txt (un file)
	ZIP nomefilezip -R *.* (tutti i file con tutte le
sottocartelle)	
	ZIP nomefilezip -R *.TXT (tutti i file TXT anche nelle
sottocartelle)
	ZIP nomefilezip *.TXT *.DOC (tutti i file TXT e DOC)
	ZIP nomefilezip -R *.TXT *.DOC (tutti i file TXT e DOC anche
sottocart.)
Ci sono anche altri paramentri, visualizzati digitando da DOS ZIP
senza nulla, ma francamente qualcuno non sono riuscito a farlo
funzionare.
<3> Parametri per usare UNZIP:
	UNZIP nomefilezip (scompatta nella cartella corrente)
	UNZIP nomefilezip -d f:\cartella1\sottocartella 
		(scompatta nel percorso indicato)
Gli altri possibili parametri si ottengono digitando UNZIP senza nulla
<4> Posso garantire solo che:
- sono programmi affidabili: la nostra ditta ha 13 filiali e usano
giornalmente almeno due programmi che li usano spesso (per un backup
di rete e per zippare dati da inviare via modem)
- vanno bene anche per grossi archivi (un file da 1,5 Gb compresso non
ha problemi)
- sono perfettamente compatibili con WinZip (e il vecchio PkZip)
ErreBi
Posterò il tutto anche sul sito comune ... se può servire
'***************************************************************
'Windows API/Global Declarations for :SuperShell
'***************************************************************
Public Const INFINITE = &HFFFF
'STARTINFO constants
Private Const STARTF_USESHOWWINDOW = &H1
Public Enum enSW
    SW_HIDE = 0
    SW_NORMAL = 1
    SW_MAXIMIZE = 3
    SW_MINIMIZE = 6
End Enum
Public Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessID As Long
    dwThreadID As Long
    End Type
Private Type STARTUPINFO
    cb As Long
    lpReserved As String
    lpDesktop As String
    lpTitle As String
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    wShowWindow As Integer
    cbReserved2 As Integer
    lpReserved2 As Byte
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
    End Type
Type SECURITY_ATTRIBUTES
    nLength As Long
    lpSecurityDescriptor As Long
    bInheritHandle As Long
    End Type
 
Public Enum enPriority_Class
    NORMAL_PRIORITY_CLASS = &H20
    IDLE_PRIORITY_CLASS = &H40
    HIGH_PRIORITY_CLASS = &H80
End Enum
Private Declare Function CreateProcess Lib "kernel32" Alias
"CreateProcessA" _
    (ByVal lpApplicationName As String, ByVal lpCommandLine As String,
_
    lpProcessAttributes As SECURITY_ATTRIBUTES, lpThreadAttributes As
_
    SECURITY_ATTRIBUTES, ByVal bInheritHandles As Long, ByVal _
    dwCreationFlags As Long, lpEnvironment As Any, ByVal
lpCurrentDriectory _
    As String, lpStartupInfo As STARTUPINFO, lpProcessInformation _
    As PROCESS_INFORMATION) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" _
    (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Function LanciaEAttendi(ByVal App As String, ByVal WorkDir As
String, _
    dwMilliseconds As Long, ByVal start_size As enSW, ByVal
Priority_Class _
    As enPriority_Class) As Boolean
    Dim pclass As Long
    Dim sinfo As STARTUPINFO
    Dim pinfo As PROCESS_INFORMATION
    'Not used, but needed
    Dim sec1 As SECURITY_ATTRIBUTES
    Dim sec2 As SECURITY_ATTRIBUTES
 
    sec1.nLength = Len(sec1)
    sec2.nLength = Len(sec2)
    sinfo.cb = Len(sinfo)
 
    sinfo.dwFlags = STARTF_USESHOWWINDOW
    sinfo.wShowWindow = start_size
 
    pclass = Priority_Class
 
    If CreateProcess(vbNullString, App, sec1, sec2, False, pclass, _
        0&, WorkDir, sinfo, pinfo) Then
        WaitForSingleObject pinfo.hProcess, dwMilliseconds
        LanciaEAttendi = True
    Else
        LanciaEAttendi = False
    End If
End Function

 wrote in message
p44kss481v3m4u5oq...@4ax.com...


Usare un ActiveX no? :-)
Quotare correttamente il testo no?
Complimenti stiamo battendo record su record 160+ righe di testo
quotate, una scritta! :-(
Remove CUTME from E-Mail address to reply!
Visit Hardware Tips: 
http://www.hardwaretips.com