Как программно узнать закончил ли ZIP свою работу ? - VB

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

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

Тот класс переделал, только не могу понять как всётаки получить ответ что ZIP закончил свою работу ? класс переделал ! по рекомендации проффесионала под ником

Dragokas

выкладываю все версии в блоге ниже фрагмент с коментарием где необходим этот код

Решение задачи: «Как программно узнать закончил ли ZIP свою работу ?»

textual
Листинг программы
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function GetActiveWindow Lib "user32" () As Long
 
Private Function CopyHere(Parent As Object, vItem, Optional vOptions) As Boolean
    '
    'Функция копирования
    'Аргументы: Папка (Zip-папка) // Копируемый объект
    '
    'Флаги опций
    '4 - Не показывать окно с прогресс-баром.
    '8 - Дать копируемому файлу новое имя, если файл с таким именем уже существует.
    '16 - Отвечать автоматически "Yes to All" в любом отображаемом диалоге.
    '256 - Отображать окно с прогресс-баром, но не показывать имена файлов.
    '4096 - Производить операции только в локальной папке. Не производить операции рекурсивно в подпапках.
    '9182 - Не копировать связанные файлы (например, html-файлы с их папками) как группу. Копировать только указанные файлы.
    '
    Dim oPr As Object, Name$, ModifyDate As Date
    Dim OldDate As Date, n&, h&
 
    OldDate = Shell.NameSpace(Parent.Self.Path).Self.ModifyDate
    Parent.CopyHere (vItem), vOptions
    On Error Resume Next
    If vItem.Count > 0 Then If Err.Number = 0 Then GoTo 1
    Do
        h = GetActiveWindow
        DoEvents
        Sleep 100
        n = n + Abs(h <> GetActiveWindow)
        ModifyDate = Shell.NameSpace(Parent.Self.Path).Self.ModifyDate
        Debug.Print ModifyDate, n
        If OldDate <> ModifyDate Or n > 1 Then Exit Do
    Loop
1
    CopyHere = True
End Function

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

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