_Unzip ohne Shell Objekt

  • Hallo liebes Autoit Team
    Sicherlich kennt jeder die Funktion _Unzip.Jetzt ist das Problem das wenn ich eine Zip Datei etnpacke,kommt das Fenster mit dem Windows Kopiervorgang.Dieses Fenster wollte ich jetzt unsichtbar machen oder gar weg machen.Ich habe es auch selber schon versucht aber das hat nicht funktioniert!

    Spoiler anzeigen

    Func _UnZip($sZip, $sDest)
    ; Test zip file
    If FileExists($sZip) Then
    ; Test destination folder
    If Not FileExists($sDest & "\") Then
    If Not DirCreate($sDest) Then Return SetError(2, 0, 0)
    EndIf
    ; Create shell object
    Local $oShell = ObjCreate("Shell.Application")
    If Not @error And IsObj($oShell) Then
    ; Get zip file namespace object
    Local $oFolder = $oShell.NameSpace ($sZip)
    If Not @error And IsObj($oFolder) Then
    ; Get list of items in zip file
    Local $oItems = $oFolder.Items ()
    If Not @error And IsObj($oItems) Then
    ; Get destination folder namespace object
    $oDest = $oShell.NameSpace ($sDest & "\")
    If Not @error And IsObj($oDest) Then
    ; Copy the files
    $oDest.CopyHere ($oItems)
    Sleep(500)
    If @error = 0 Then
    Return 1
    Else
    Return SetError(7, 0, 0)
    EndIf
    Else
    Return SetError(6, 0, 0)
    EndIf
    Else
    Return SetError(5, 0, 0)
    EndIf
    Else
    Return SetError(4, 0, 0)
    EndIf
    Else
    Return SetError(3, 0, 0)
    EndIf
    Else
    Return SetError(1, 0, 0)
    EndIf
    EndFunc ;==>_UnZip

    Hier ist noch mal die Normale Funktion

  • Wie soll ich das denn machen wenn der Titel immer anders ist?Also der Titel des Kopierens unter Win7 lautet ja Kopieren von Blabla Elementen.Und unter WinXP ist er ja wieder anderst.Ich habe es mit folgender Methode versucht.Doch leider hat das nichts geändert.Das Kopierfenster wird trotzdem angezeigt!

    Spoiler anzeigen

    Func _UnZip($sZip, $sDest)
    ; Test zip file
    If FileExists($sZip) Then
    ; Test destination folder
    If Not FileExists($sDest & "\") Then
    If Not DirCreate($sDest) Then Return SetError(2, 0, 0)
    EndIf
    ; Create shell object
    Local $oShell = ObjCreate("Shell.Application")
    If Not @error And IsObj($oShell) Then
    ; Get zip file namespace object
    Local $oFolder = $oShell.NameSpace ($sZip)
    If Not @error And IsObj($oFolder) Then
    ; Get list of items in zip file
    Local $oItems = $oFolder.Items ()
    If Not @error And IsObj($oItems) Then
    ; Get destination folder namespace object
    $oDest = $oShell.NameSpace ($sDest & "\")
    If Not @error And IsObj($oDest) Then
    WinSetState($oFolder,$oItems,@SW_HIDE) ;Das habe ich hinzugefügt
    ; Copy the files
    $oDest.CopyHere ($oItems)
    Sleep(500)
    If @error = 0 Then
    Return 1
    Else
    Return SetError(7, 0, 0)
    EndIf
    Else
    Return SetError(6, 0, 0)
    EndIf
    Else
    Return SetError(5, 0, 0)
    EndIf
    Else
    Return SetError(4, 0, 0)
    EndIf
    Else
    Return SetError(3, 0, 0)
    EndIf
    Else
    Return SetError(1, 0, 0)
    EndIf
    EndFunc ;==>_UnZip

  • Das Beispiel von SEuBo hat auch nichts gebracht.Ist es denn überhaupt möglich? ?(

  • Danke.Die 7Zip-UDF funkzt super :thumbup: .(Warum bin ich eigentlich nie darauf gekommen :wacko: )