26-02-17, 04:14 AM
(25-02-17, 07:49 PM)سعود كتب : انظر للمثال التالي:شكرا لك
اطلع على هذه المشاركة:#5PHP كود :
Imports System.ComponentModel
Imports System.IO
Imports Ionic.Zip
Public Class Form1
Dim lst As New List(Of String)
Dim ofd As OpenFileDialog
Dim sfd As SaveFileDialog
Dim zip_pass As String = ""
Private Sub p(ByVal i As Integer)
If ProgressBar1.InvokeRequired Then
ProgressBar1.Invoke(New Action(Of Integer)(AddressOf p), i)
Else
ProgressBar1.Value = i
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
zip_pass = InputBox("أكتب كلمة مرور لقفل الملف")
lst.Clear()
ofd = New OpenFileDialog
ofd.Multiselect = True
If ofd.ShowDialog = DialogResult.OK Then
lst.AddRange(ofd.FileNames)
End If
If lst.Count > 0 Then
Button1.Enabled = False
Button2.Enabled = False
ProgressBar1.Maximum = lst.Count - 1
If b1.IsBusy = False Then b1.RunWorkerAsync()
End If
End Sub
Dim zip As ZipFile
Private Sub b1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles b1.DoWork
zip = New ZipFile
zip.Password = zip_pass
For a = 0 To lst.Count - 1
b1.ReportProgress(a)
zip.AddFile(lst(a), "")
Next
End Sub
Private Sub b1_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles b1.ProgressChanged
p(e.ProgressPercentage)
End Sub
Private Sub b1_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles b1.RunWorkerCompleted
If zip.Count > 0 Then
zip.Save(IO.Path.GetFileNameWithoutExtension(lst(lst.Count - 1)) & ".zip")
End If
Button1.Enabled = True
Button2.Enabled = True
End Sub
Dim zipfilename As String = ""
Private Sub smax(ByVal i As Integer)
If ProgressBar1.InvokeRequired Then
ProgressBar1.Invoke(New Action(Of Integer)(AddressOf smax), i)
Else
ProgressBar1.Maximum = i
End If
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
zip_pass = InputBox("أكتب كلمة مرور لالغاء قفل الملف")
ofd = New OpenFileDialog
ofd.Filter = "Zip Files(*.zip)|*.zip"
If ofd.ShowDialog = DialogResult.OK Then
zipfilename = ofd.FileName
Button2.Enabled = False
Button1.Enabled = False
If b2.IsBusy = False Then b2.RunWorkerAsync()
End If
End Sub
Dim zip2 As ZipFile
Private Sub b2_DoWork(sender As Object, e As DoWorkEventArgs) Handles b2.DoWork
zip2 = ZipFile.Read(zipfilename)
zip2.Password = zip_pass
smax((zip2.Count) - 1)
Dim m As Integer = 0
For Each en As ZipEntry In zip2
b2.ReportProgress(m)
en.Extract()
m += 1
Next
End Sub
Private Sub b2_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles b2.RunWorkerCompleted
Button2.Enabled = True
Button1.Enabled = True
End Sub
Private Sub b2_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles b2.ProgressChanged
p(e.ProgressPercentage)
End Sub
End Class
بالنسبة لالغاء النافذة فتستطيع تمرير كلمة مرور ثابتة من دون inputbox
مثال جميل اخي
لكن المثال يظغط ملف وليس فولدر
وبما ان مسار الفولدر المراد ظغطه ثابت هل يمكن التخلي على ادات openfiledialog في زر الحفظ
وشكرا

