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 ?