Можно ли на VB создать самораспаковываюшийся архив?

Узнай цену своей работы

Формулировка задачи:

Вопрос задан в заголовке. Меня интересует. Если можно, то как? А если нет, то что можно?

Решение задачи: «Можно ли на VB создать самораспаковываюшийся архив?»

textual
Листинг программы
Option Explicit
'
'Архиватор-деархиватор ZIP
'by the fever brain 2016
'
Const r = 90
Dim WithEvents cb1 As CommandButton, WithEvents cb2 As CommandButton
Dim zn$, pn$, dd$
 
Private Sub cb1_Click()
    'Создание архива для указанного пути
    zn = InputBox("Имя архива", , Full("Archive.zip")): If LCase(Right$(zn, 4)) <> ".zip" Then Exit Sub
    pn = InputBox("Путь к файлу(папке)", , Full("test.txt")): If pn = "" Then Exit Sub
    CreateZIP(zn).CopyHere (Full(pn))
End Sub
 
Private Sub cb2_Click()
    'Извлечение из архива содержимого в одноименную папку
    zn = InputBox("Имя архива", , Full("Archive.zip")): If LCase(Right$(zn, 4)) <> ".zip" Then Exit Sub
    dd = InputBox("Папка извлечения", , Full(Replace$(zn, ".zip", "", , , 1))): If dd = "" Then Exit Sub
    On Error Resume Next: MkDir dd: On Error GoTo 0
    ShApp.NameSpace(Full(dd)).CopyHere ShApp.NameSpace(Full(zn)).Items
End Sub
 
Private Sub Form_Load()
    Dim w&
    w = r
    ChDir App.Path
    With Fso.CreateTextFile("test.txt")
        'Создаём тэстовый файл и напишем туда чтонибудь
        .Write "Привет народ ! Да здравствует WinRar !"
    End With
 
    'Добавляем кнопочек
    Set cb1 = Controls.Add("vb.CommandButton", "cb1"): With cb1
        .Move w, r, 2500: w = w + .Width + r
        .Caption = "Добавить в архив zip"
        .Visible = 1
    End With
 
    Set cb2 = Controls.Add("vb.CommandButton", "cb2"): With cb2
        .Move w, r
        .Caption = "извлеч в ..."
        .Visible = 1
    End With
End Sub
 
Private Function Full$(ByVal Path$) 'полный путь
    Full = Fso.GetAbsolutePathName(Path)
End Function
 
Private Function Fso()
    Static obj As Object
    If obj Is Nothing Then Set obj = CreateObject("scripting.filesystemobject")
    Set Fso = obj
End Function
 
Private Function ShApp()
    Static obj As Object
    If obj Is Nothing Then Set obj = CreateObject("Shell.Application")
    Set ShApp = obj
End Function
 
Private Function CreateZIP(ByVal ZipName$) As Object
    With Fso
        If LCase(Right$(ZipName, 3)) <> "zip" Then Exit Function
        If .FileExists(ZipName) Then Kill ZipName
        .CreateTextFile(ZipName, 1).Write "PK" & Chr(5) & Chr(6) & String(18, 0)
        Set CreateZIP = ShApp.NameSpace(Full(ZipName))
    End With
End Function
 
 
Private Sub Form_Unload(Cancel As Integer)
    If MsgBox("Убрать созданные файлы и папки этой программой ?", 68) = vbNo Then Exit Sub
    With Fso
        On Error Resume Next
        Fso.DeleteFile "test.txt", 1
        Fso.DeleteFolder "Archive", 1
        Fso.DeleteFile "Archive.zip", 0
    End With
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы