Visual Basic - Ventana Copiar Archivo

Life is soft - evento anual de software empresarial
 
Vista:

Ventana Copiar Archivo

Publicado por El Ferna Stereo Laser (33 intervenciones) el 05/01/2005 19:22:07
Bueno el asunto es este tengo una rutina que me copia archivos de una ubicacion a otra, hasta ahi no hay problema, lo que quiero es que mi programa muestre la ventana de "Copiando Archivos..." de Windows mientras ejecuto la rutina que tengo. Gracias al que me pueda ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Constantes y APIS

Publicado por Benjo (679 intervenciones) el 05/01/2005 19:41:32
Las constantes y APIS son estas
Private Const FO_COPY = &H2& 'Copia los archivos especificados
Private Const FO_DELETE = &H3& 'Borra los archivos especificados
Private Const FO_MOVE = &H1& 'Mueve los archivos especificados
Private Const FO_RENAME = &H4& 'Renombra los archivos
Private Const FOF_CREATEPROGRESSDLG = &H0& 'handle de la ventana
Private Const FOF_FILESONLY = &H80&
Private Const FOF_MULTIDESTFILES = &H1&
Private Const FOF_NOCONFIRMATION = &H10& 'Responde Yes
Private Const FOF_NOCONFIRMMKDIR = &H200& 'No confirma la creación de Carpetas
Private Const FOF_RENAMEONCOLLISION = &H8&

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

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Código para copiar

Publicado por Benjo (679 intervenciones) el 05/01/2005 20:05:57
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 = "D:\Data1.cab" _
& vbNullChar _
& "D:\instmsiw.exe" _
& vbNullChar _
& vbNullChar
.pTo = "c:\cop\" & vbNullChar & vbNullChar
.fFlags = FOF_SIMPLEPROGRESS Or FOF_NOCONFIRMATION Or _
FOF_NOCONFIRMMKDIR
.lpszProgressTitle = "Se están copiando los archivos " & _
"Ok." & vbNullChar _
& vbNullChar
End With
Call CopyMemory(foBuf(1), fileop, lenFileop)
Call CopyMemory(foBuf(19), foBuf(21), 12)
result = SHFileOperation(foBuf(1))

If result <> 0 Then ' Falló la operación
MsgBox Err.LastDllError 'Muestra el error .devuelto por la API
Else
If fileop.fAnyOperationsAborted <> 0 Then
MsgBox "La Operacíón ha Fallado"
End If
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar