Hallo Leute,
wer wollte nicht schon lange - Zip-Dateien - ohne Verwendung von externen Tools entpacken.
Windows kann das ja auch - zumindest einige Versionen davon - z.B. Windows Xp und Windows Vista !
Nachdem ich gestern abend mit putzen, kochen und backen fertig war, hab ich einfach nochmal ein bischen im Netz gesurft und bin über einen interessanten VB6 Code zum Thema entpacken gestolpert.
Wer kennt nicht die nette Funktion, mit welcher man ohne Unzip Tools Zip-Dateien entpacken kann ?
Eine echte Windows Funktion.
Nach ein bischen Recherche im Netz bin ich auf die Interfaces gestossen, die ich dafür brauche.
Für alle die schlecht im genau lesen sind hier die Verweise die hinzugefügt werden müssen als Fett-Schrift.
Für das Beipspiel wird ein Verweis auf die Shell32.dll aus dem System32 Ordner benötigt.
Wer das ganze einfach mal testen will, kann folgenden Code für die Windows Form hernehmen.
Viel Spass damit.
Wer fragen oder Anregungen hat, möge sich melden.
EDIT:
Code der Form geändert - jetzt bekommt man das Ende des entpackens als Meldung bestätigt.
Gruss
mikeb69
wer wollte nicht schon lange - Zip-Dateien - ohne Verwendung von externen Tools entpacken.
Windows kann das ja auch - zumindest einige Versionen davon - z.B. Windows Xp und Windows Vista !
Nachdem ich gestern abend mit putzen, kochen und backen fertig war, hab ich einfach nochmal ein bischen im Netz gesurft und bin über einen interessanten VB6 Code zum Thema entpacken gestolpert.
Wer kennt nicht die nette Funktion, mit welcher man ohne Unzip Tools Zip-Dateien entpacken kann ?
Eine echte Windows Funktion.
Nach ein bischen Recherche im Netz bin ich auf die Interfaces gestossen, die ich dafür brauche.
Für alle die schlecht im genau lesen sind hier die Verweise die hinzugefügt werden müssen als Fett-Schrift.
Für das Beipspiel wird ein Verweis auf die Shell32.dll aus dem System32 Ordner benötigt.
VB.NET-Quellcode
- Imports Shell32
- Imports System
- Imports System.IO
- Public Class ClassUnzip
- Private _file As String
- Private _folder As String
- Private _towhere As String
- Private _shell As Shell32.IShellDispatch2
- ''' <summary>Event welches vor dem Entpacken (Unzip) ausgeführt wird.</summary>
- ''' <remarks></remarks>
- Public Event Unzipstart()
- ''' <summary>Event welches nach dem Entpacken (Unzip) ausgeführt wird.</summary>
- ''' <remarks></remarks>
- Public Event UnzipFinishd()
- ''' <summary>Neue Instanz der ClassUnzip Klasse.</summary>
- ''' <param name="file">Datei welche entpackt werden soll.</param>
- ''' <param name="towhere">Zielordner.</param>
- ''' <remarks></remarks>
- Public Sub New(ByVal file As String, ByVal towhere As String)
- _file = file
- _towhere = towhere
- _folder = Path.Combine(Path.GetDirectoryName(_file), _towhere)
- _shell = CreateObject("Shell.Application")
- End Sub
- ''' <summary>Das Entpacken (Unzip) wird ausgeführt.</summary>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Public Function UnzipNow() As Boolean
- 'prüfen ob der ordner existiert
- If Directory.Exists(_folder) = False Then
- Directory.CreateDirectory(_folder)
- End If
- 'event für start feuern
- RaiseEvent Unzipstart()
- 'entpacken
- Dim temp As Shell32.Folder = _shell.NameSpace((_folder))
- If temp IsNot Nothing Then
- temp.CopyHere(_shell.NameSpace((_file)).Items)
- End If
- 'event für ende feuern
- RaiseEvent UnzipFinishd()
- 'rückgabe wert setzen
- Return True
- End Function
- ''' <summary>Gibt den Namen der gepackten Datei zurück, oder setzt diesen.</summary>
- ''' <value></value>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Public Property UnZipFile() As String
- Get
- Return _file
- End Get
- Set(ByVal value As String)
- _file = value
- End Set
- End Property
- ''' <summary>Gibt den Zielort (entpacken) zurück, oder setzt diesen.</summary>
- ''' <value></value>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Public Property UnzipTo() As String
- Get
- Return _towhere
- End Get
- Set(ByVal value As String)
- _towhere = value
- End Set
- End Property
- End Class
Wer das ganze einfach mal testen will, kann folgenden Code für die Windows Form hernehmen.
VB.NET-Quellcode
- Imports System
- Imports System.IO
- Public Class Form1
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Using ofd As New OpenFileDialog
- ofd.Filter = "ZipFile|*.zip"
- If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
- Dim file As String = ofd.FileName
- Dim cu As New ClassUnzip(file, Path.Combine(Path.GetDirectoryName(file), "test_unzip_folder"))
- AddHandler cu.UnzipFinishd, AddressOf Unziped
- cu.UnzipNow()
- End If
- End Using
- End Sub
- Private Sub Unziped()
- MessageBox.Show("Unzipping finished")
- End Sub
- End Class
Viel Spass damit.
Wer fragen oder Anregungen hat, möge sich melden.
EDIT:
Code der Form geändert - jetzt bekommt man das Ende des entpackens als Meldung bestätigt.
Gruss
mikeb69
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mikeb69“ ()