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

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

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

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

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

textual
Листинг программы
  1. Option Explicit
  2. '
  3. 'Архиватор-деархиватор ZIP
  4. 'by the fever brain 2016
  5. '
  6. Const r = 90
  7. Dim WithEvents cb1 As CommandButton, WithEvents cb2 As CommandButton
  8. Dim zn$, pn$, dd$
  9.  
  10. Private Sub cb1_Click()
  11.     'Создание архива для указанного пути
  12.    zn = InputBox("Имя архива", , Full("Archive.zip")): If LCase(Right$(zn, 4)) <> ".zip" Then Exit Sub
  13.     pn = InputBox("Путь к файлу(папке)", , Full("test.txt")): If pn = "" Then Exit Sub
  14.     CreateZIP(zn).CopyHere (Full(pn))
  15. End Sub
  16.  
  17. Private Sub cb2_Click()
  18.     'Извлечение из архива содержимого в одноименную папку
  19.    zn = InputBox("Имя архива", , Full("Archive.zip")): If LCase(Right$(zn, 4)) <> ".zip" Then Exit Sub
  20.     dd = InputBox("Папка извлечения", , Full(Replace$(zn, ".zip", "", , , 1))): If dd = "" Then Exit Sub
  21.     On Error Resume Next: MkDir dd: On Error GoTo 0
  22.     ShApp.NameSpace(Full(dd)).CopyHere ShApp.NameSpace(Full(zn)).Items
  23. End Sub
  24.  
  25. Private Sub Form_Load()
  26.     Dim w&
  27.     w = r
  28.     ChDir App.Path
  29.     With Fso.CreateTextFile("test.txt")
  30.         'Создаём тэстовый файл и напишем туда чтонибудь
  31.        .Write "Привет народ ! Да здравствует WinRar !"
  32.     End With
  33.  
  34.     'Добавляем кнопочек
  35.    Set cb1 = Controls.Add("vb.CommandButton", "cb1"): With cb1
  36.         .Move w, r, 2500: w = w + .Width + r
  37.         .Caption = "Добавить в архив zip"
  38.         .Visible = 1
  39.     End With
  40.  
  41.     Set cb2 = Controls.Add("vb.CommandButton", "cb2"): With cb2
  42.         .Move w, r
  43.         .Caption = "извлеч в ..."
  44.         .Visible = 1
  45.     End With
  46. End Sub
  47.  
  48. Private Function Full$(ByVal Path$) 'полный путь
  49.    Full = Fso.GetAbsolutePathName(Path)
  50. End Function
  51.  
  52. Private Function Fso()
  53.     Static obj As Object
  54.     If obj Is Nothing Then Set obj = CreateObject("scripting.filesystemobject")
  55.     Set Fso = obj
  56. End Function
  57.  
  58. Private Function ShApp()
  59.     Static obj As Object
  60.     If obj Is Nothing Then Set obj = CreateObject("Shell.Application")
  61.     Set ShApp = obj
  62. End Function
  63.  
  64. Private Function CreateZIP(ByVal ZipName$) As Object
  65.     With Fso
  66.         If LCase(Right$(ZipName, 3)) <> "zip" Then Exit Function
  67.         If .FileExists(ZipName) Then Kill ZipName
  68.         .CreateTextFile(ZipName, 1).Write "PK" & Chr(5) & Chr(6) & String(18, 0)
  69.         Set CreateZIP = ShApp.NameSpace(Full(ZipName))
  70.     End With
  71. End Function
  72.  
  73.  
  74. Private Sub Form_Unload(Cancel As Integer)
  75.     If MsgBox("Убрать созданные файлы и папки этой программой ?", 68) = vbNo Then Exit Sub
  76.     With Fso
  77.         On Error Resume Next
  78.         Fso.DeleteFile "test.txt", 1
  79.         Fso.DeleteFolder "Archive", 1
  80.         Fso.DeleteFile "Archive.zip", 0
  81.     End With
  82. End Sub

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


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

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

9   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы