Author : Dipen Anovadia
Date Submitted : 5/19/2006
Category : Windows Operations
Compatibility : VB 6,VB 5
This code has been accessed 10333 times.
Task : USE WINDOWS API TO COPY, MOVE OR DELETE FILES/FOLDERS
FROM COMPUTER AS EXACTLY WINDOWS DO.
Declarations
Code
'*** Functions ***
'If possible, it is recommended to paste all the below code to a module
'NOTE:
'Tested in Windows XP SP 2...
'Errors, feedbacks, comments, likes, dislikes, etc...
'To Email: dippu75@hotmail.com
Public Function PathExist(sPath As String, Optional bDir As Boolean = False, Optional lOUT_Error As Long = 0, Optional bShowError As Boolean = True) As Boolean
On Error GoTo errPE
PathExist = False
If Trim$(sPath) = "" Then Exit Function
PathExist = IIf(Len(Dir(sPath, IIf(bDir, vbDirectory, vbNormal))) > 0, True, False)
Exit Function
errPE:
PathExist = False
lOUT_Error = Err.Number
If bShowError Then
MsgBox "Error: " & Error, vbCritical, "Error " & Err
End If
Err.Clear
End Function
Public Function Copy(hWind As Long, sSource As String, sTarget As String, Optional bConfirmOverwrite As Boolean = False, Optional bShowProgress As Boolean = True, Optional lOUT_Abort As Long = 0, Optional lOUT_Error As Long = 0) As Long
On Error GoTo errCopy
Dim SHFO As SHFILEOPSTRUCT
With SHFO
.hWnd = hWind
If bConfirmOverwrite And bShowProgress Then
.fFlags = FOF_NOCONFIRMATION Or FOF_SIMPLEPROGRESS
ElseIf bConfirmOverwrite And Not bShowProgress Then
.fFlags = FOF_NOCONFIRMATION
ElseIf Not bConfirmOverwrite And bShowProgress Then
.fFlags = FOF_SIMPLEPROGRESS
Else
.fFlags = FOF_SILENT
End If
.pFrom = sSource
.pTo = sTarget
.wFunc = FO_COPY
End With
Copy = SHFileOperation(SHFO)
lOUT_Abort = SHFO.fAborted
lOUT_Error = 0
Exit Function
errCopy:
lOUT_Abort = 1
lOUT_Error = Err.Number
Err.Clear
Copy = 0
End Function
Public Function Move(hWind As Long, sSource As String, sTarget As String, Optional bConfirmOverwrite As Boolean = False, Optional bShowProgress As Boolean = True, Optional lOUT_Abort As Long = 0, Optional lOUT_Error As Long = 0) As Long
On Error GoTo errMove
Dim SHFO As SHFILEOPSTRUCT
With SHFO
.hWnd = hWind
If bConfirmOverwrite And bShowProgress Then
.fFlags = FOF_NOCONFIRMATION Or FOF_SIMPLEPROGRESS
ElseIf bConfirmOverwrite And Not bShowProgress Then
.fFlags = FOF_NOCONFIRMATION
ElseIf Not bConfirmOverwrite And bShowProgress Then
.fFlags = FOF_SIMPLEPROGRESS
Else
.fFlags = FOF_SILENT
End If
.pFrom = sSource
.pTo = sTarget
.wFunc = FO_MOVE
End With
Move = SHFileOperation(SHFO)
lOUT_Abort = SHFO.fAborted
lOUT_Error = 0
Exit Function
errCopy:
lOUT_Abort = 1
lOUT_Error = Err.Number
Err.Clear
Move = 0
End Function
Public Function Delete(hWind As Long, sSource As String, Optional bToRecycleBin As Boolean = True, Optional bConfirm As Boolean = True, Optional bShowProgress As Boolean = True, Optional lOUT_Abort As Long = 0, Optional lOUT_Error As Long = 0) As Long
On Error GoTo errDelete
Dim SHFO As SHFILEOPSTRUCT
With SHFO
.hWnd = hWind
If bToRecycleBin And bShowProgress And bConfirm Then
.fFlags = FOF_ALLOWUNDO Or FOF_SIMPLEPROGRESS
ElseIf bToRecycleBin And bShowProgress And Not bConfirm Then
.fFlags = FOF_ALLOWUNDO Or FOF_SIMPLEPROGRESS Or FOF_NOCONFIRMATION
ElseIf bToRecycleBin And Not bShowProgress And bConfirm Then
.fFlags = FOF_ALLOWUNDO
ElseIf bToRecycleBin And Not bShowProgress And Not bConfirm Then
.fFlags = FOF_ALLOWUNDO Or FOF_NOCONFIRMATION
ElseIf Not bToRecycleBin And bShowProgress And bConfirm Then
.fFlags = FOF_SIMPLEPROGRESS
ElseIf Not bToRecycleBin And bShowProgress And Not bConfirm Then
.fFlags = FOF_SIMPLEPROGRESS Or FOF_NOCONFIRMATION
ElseIf Not bToRecycleBin And Not bShowProgress And bConfirm Then
.fFlags = FOF_SILENT
ElseIf Not (bToRecycleBin Or bShowProgress Or bConfirm) Then
.fFlags = FOF_NOCONFIRMATION
Else
.fFlags = FOF_SILENT
End If
.pFrom = sSource
.wFunc = FO_DELETE
End With
Delete = SHFileOperation(SHFO)
lOUT_Abort = SHFO.fAborted
lOUT_Error = 0
Exit Function
errDelete:
lOUT_Abort = 1
lOUT_Error = Err.Number
Err.Clear
Delete = 0
End Function