Tipp 1.25 - Verzeichnis löschen

Wie kann ich einen Verzeichnisbaum löschen?

Mit dieser Funktion können Sie einen Verzeichnisbaum löschen. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.

Api-AufrufeVerwendete Win32-Api-Aufrufe und Typen: GetDesktopWindow, SHFileOperation - SHFILEOPSTRUCT

Beispiel:

Option Explicit
 
Public Type SHFILEOPSTRUCT
  hwnd                   As Long
  wFunc                  As Long
  pFrom                  As String
  pTo                    As String
  fFlags                 As Integer
  fAborted               As Long
  hNameMaps              As Long
  sProgress              As String
End Type
 
Public Declare Function GetDesktopWindow _
    Lib "user32" () As Long
Public Declare Function SHFileOperation _
    Lib "shell32.dll" Alias _
    "SHFileOperationA" _
    (lpFileOp As SHFILEOPSTRUCT) _
    As Long
 
Public Function DelTree( _
                ByVal sParentFolder As String, _
                Optional bAllowUndo As Boolean = True) _
                As Boolean
  '// -----------------------------------------------------
  '// Methode:   | Löscht einen Verzeichnisbaum
  '// -----------------------------------------------------
  '// Parameter: | sParentFolder         - Ausgangsordner
  '//            | bAllowUndo (optional) - in den Papier-
  '//            | korb verschieben oder direkt löschen
  '// -----------------------------------------------------
  '// Rückgabe:  | True bei Erfolg
  '// -----------------------------------------------------
  '// Autor:     | Stefan Kulpa
  '//            | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
 
  Const FO_DELETE     As Long = &H3
  Const FOF_ALLOWUNDO As Long = &H40
  Dim uSHFileOp       As SHFILEOPSTRUCT
  With uSHFileOp
    .hwnd = GetDesktopWindow()
    .wFunc = FO_DELETE
    .pFrom = sParentFolder & vbNullChar
  End With
  If bAllowUndo Then uSHFileOp.fFlags = FOF_ALLOWUNDO
  DelTree = (SHFileOperation(uSHFileOp) = 0)
 
End Function