VB-Homepage Tipp 163

systemeigenes Kopieren (Anim,Wildcards u. Fehlerbehandlung)

Dieser Tipp gehört meines erachtens wirklich in die Kategorie TopTipp, denn hier können Sie das System voll anzapfen und brauchen sich eigentlich um nichts mehr zu kümmern.

Dafür bekommen sie eine Fortschrittsanzeige , Fehlerbehandlung inklusive Verzeichnis anlegen, wenn das Ziel noch nicht existiert, eine Animation während des Vorgangs ....


Und soviel gehört auch gar nicht dazu, um den Tipp nutzen zu können.

1. Ein neues Projekt mit einer Form anlegen.

2. Einen CommandButton plazieren, der später die Aktion auslösen soll.

3. Unter Allgemein/Deklarationen folgendes einfügen.
Const FO_MOVE As Long = &H1
Const FO_COPY As Long = &H2
Const FO_DELETE As Long = &H3
Const FO_RENAME As Long = &H4
Const FOF_MULTIDESTFILES As Long = &H1
Const FOF_CONFIRMMOUSE As Long = &H2
Const FOF_SILENT As Long = &H4
Const FOF_RENAMEONCOLLISION As Long = &H8
Const FOF_NOCONFIRMATION As Long = &H10
Const FOF_WANTMAPPINGHANDLE As Long = &H20
Const FOF_CREATEPROGRESSDLG As Long = &H0
Const FOF_ALLOWUNDO As Long = &H40
Const FOF_FILESONLY As Long = &H80
Const FOF_SIMPLEPROGRESS As Long = &H100
Const FOF_NOCONFIRMMKDIR As Long = &H200

Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Long
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String
End Type

Private Declare Function SHFileOperation Lib "Shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

4. Unter Command1_Click folgendes einfügen.
Dim result As Long, fileop As SHFILEOPSTRUCT

With fileop
   .hwnd = Me.hwnd
   .wFunc = FO_COPY 'wenn Sie kopieren möchten
   '.wFunc= FO_MOVE 'wenn Sie verschieben möchten
   '.wFunk= FO_DELETE 'wenn Sie löschen möchten
   .pFrom = "C:\Windows\*.ini" & vbNullChar & "C:\Windows\*.dat" & vbNullChar & vbNullChar

   'alle *.ini und alle *.dat Dateien aus dem Verzeichnis C:\Windows ausgewählt
   '.pFrom = "C:\*.*" & vbNullChar & vbNullChar
   'hier würden alle Dateien aus C:\ ausgewählt

   .pTo = "D:\temp" & vbNullChar & vbNullChar

   'die ausgewählten Dateien nach D:\Temp kopieren
   .fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY
End With

result = SHFileOperation(fileop)

If result <> 0 Then
   MsgBox "Fehler " & Err.LastDllError & " aufgetreten"
Else
   If fileop.fAnyOperationsAborted <> 0 Then
      MsgBox "Fehler aufgetreten"
   Else
      MsgBox "Operation war erfolgreich"
   End If
End If

5. Da es das schon war, können Sie nun Ihr neues Projekt mit F5 starten.
Gegebenenfalls müssen Sie die Pfade modifizieren


Tipp-Download

Quelle :

Zurück zur Übersichtsseite