io di solito delego questi compiti nel senso che:
codice:
' procedura che copia
Open App.Path & "\copia.bat" For Output As #iFile
Print #iFile, "xcopy " & Filesorgente & " " & filedest
Close #iFile
ShellAndWait App.Path & "\copia.bat", vbHide
Kill App.Path & "\copia.bat"
codice:
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Private Const STATUS_PENDING = &H103&
Public Sub ShellAndWait(sFile As String, Visualizzazione As Long)
Dim hProcess As Long
Dim ProcessId As Long
Dim CodExit As Long
ProcessId = Shell(sFile, Visualizzazione)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessId)
Do
Call GetExitCodeProcess(hProcess, CodExit)
DoEvents
Loop While CodExit = STATUS_PENDING
Call CloseHandle(hProcess)
End Sub