Allora uso questo codice per copiare un file da una cartella all'altra (file pesanti 1-2Gb)

  • Option Explicit
    Private Const FO_COPY = &H2&
    Private Const FO_DELETE = &H3&
    Private Const FO_MOVE = &H1&
    Private Const FO_RENAME = &H4&
    Private Const FOF_ALLOWUNDO = &H40&
    Private Const FOF_CONFIRMMOUSE = &H2&
    Private Const FOF_CREATEPROGRESSDLG = &H0&
    Private Const FOF_FILESONLY = &H80&
    Private Const FOF_MULTIDESTFILES = &H1&
    Private Const FOF_NOCONFIRMATION = &H10&
    Private Const FOF_NOCONFIRMMKDIR = &H200&
    Private Const FOF_RENAMEONCOLLISION = &H8&
    Private Const FOF_SILENT = &H4&
    Private Const FOF_SIMPLEPROGRESS = &H100&

    Private Const FOF_WANTMAPPINGHANDLE = &H20&
    Private Type SHFILEOPSTRUCT
    hWnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As String
    End Type

    Private Declare Sub CopyMemory Lib "kernel32" _
    Alias "RtlMoveMemory" (hpvDest As Any, _
    hpvSource As Any, ByVal cbCopy As Long)

    Private Declare Function SHFileOperation Lib "shell32.dll" _
    Alias "SHFileOperationA" (lpFileOp As Any) As Long


    Dim result As Long
    Dim lenFileop As Long
    Dim foBuf() As Byte
    Dim fileop As SHFILEOPSTRUCT

    lenFileop = LenB(fileop)
    ReDim foBuf(1 To lenFileop)

    With fileop
    .hWnd = Me.hWnd
    .wFunc = FO_COPY
    .pFrom = List1.List(0) & vbNullChar
    .pTo = List2.List(0)
    .fFlags = FOF_CREATEPROGRESSDLG
    End With

    Call CopyMemory(foBuf(1), fileop, lenFileop)
    Call CopyMemory(foBuf(19), foBuf(21), 12)

    List1.RemoveItem 0
    List2.RemoveItem 0

    result = SHFileOperation(foBuf(1))



Passo i file in due list la prima dove si trova e la seconda dove deve essere copiata, la mia domanda è come rendere questa copia in hide cioè a me serve pur se il programma viene terminato la copia continua, per questo ho usato questo metodo però non voglio che l'utente ha la finestra di tutte queste copie e quindi le vorrei rendere hide come faccio ?