by Dipen Anovadia (19 Submissions)
Category: Windows System Services
Compatability: Visual Basic 5.0
Difficulty: Unknown Difficulty
Originally Published: Fri 19th May 2006
Date Added: Mon 8th February 2021
Rating:
(1 Votes)
USE WINDOWS API TO COPY, MOVE OR DELETE FILES/FOLDERS FROM COMPUTER AS EXACTLY WINDOWS DO.
API Declarations
Public Const FO_COPY As Long = &H2
Public Const FO_DELETE As Long = &H3
Public Const FO_MOVE As Long = &H1
Public Const FO_RENAME As Long = &H4
Public Const FOF_ALLOWUNDO As Long = &H40
Public Const FOF_CONFIRMMOUSE As Long = &H2
Public Const FOF_FILESONLY As Long = &H80
Public Const FOF_MULTIDESTFILES As Long = &H1
Public Const FOF_NO_CONNECTED_ELEMENTS As Long = &H2000
Public Const FOF_NOCONFIRMATION As Long = &H10
Public Const FOF_NOCONFIRMMKDIR As Long = &H200
Public Const FOF_NOCOPYSECURITYATTRIBS As Long = &H800
Public Const FOF_NOERRORUI As Long = &H400
Public Const FOF_NORECURSION As Long = &H1000
Public Const FOF_RENAMEONCOLLISION As Long = &H8
Public Const FOF_SILENT As Long = &H4
Public Const FOF_SIMPLEPROGRESS As Long = &H100
Public Const FOF_WANTMAPPINGHANDLE As Long = &H20
Public Const FOF_WANTNUKEWARNING As Long = &H4000
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 SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (ByRef lpFileOp As SHFILEOPSTRUCT) As Long
'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: [email protected]
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
No comments have been posted about USE WINDOWS API TO COPY, MOVE OR DELETE FILES/FOLDERS FROM COMPUTER AS EXACTLY WINDOWS DO.. Why not be the first to post a comment about USE WINDOWS API TO COPY, MOVE OR DELETE FILES/FOLDERS FROM COMPUTER AS EXACTLY WINDOWS DO..