VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



USE WINDOWS API TO COPY, MOVE OR DELETE FILES/FOLDERS FROM COMPUTER AS EXACTLY WINDOWS DO.

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


Rate USE WINDOWS API TO COPY, MOVE OR DELETE FILES/FOLDERS FROM COMPUTER AS EXACTLY WINDOWS DO.



'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


Download this snippet    Add to My Saved Code

USE WINDOWS API TO COPY, MOVE OR DELETE FILES/FOLDERS FROM COMPUTER AS EXACTLY WINDOWS DO. Comments

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..

Post your comment

Subject:
Message:
0/1000 characters