La Web del Programador: Comunidad de Programadores
 
    Pregunta:  58507 - ERROR EN EL EXE PERO NO EN EL PROYECTO
Autor:  Ivan Rios Ramirez
Tengo un problema con el EXE generado de mi proyecto por VB6, el programa que compile tiene la funcion de copiar archivos usando la API de windows (SHFileOperationA) al dar click en una imagen, el programa funciona perfectamente cuando lo corro desde VB6 pero cuando compilo el EXE y lo ejecuto por si solo Windows me marca un error diciendo que el programa debe cerrarse, mi SO es Windows XP SP2, el programa esta diseƱado para ser ejecutado desde la raiz de una unidad, tiene alguien idea de por que sucede esto???

aqui algo de codigo:

Private Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Boolean
hNameMappings As Long
lpszProgressTitle As String
End Type

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

Private Const FO_COPY = &H2
Private Const FOF_SIMPLEPROGRESS = &H100
Private Const FOF_NOCONFIRMATION = &H10
Private Const FOF_NOCONFIRMMKDIR = &H200
Private Const FOF_ALLOWUNDO = &H40

Dim sh_op As SHFILEOPSTRUCT

With sh_op
.hWnd = Form1.hWnd
.wFunc = FO_COPY
.pFrom = Form1.File1.Path & "" & archivo & vbNullChar & vbNullChar
.pTo = usb & "SO" & archivo & vbNullChar & vbNullChar
.fFlags = FOF_SIMPLEPROGRESS Or FOF_ALLOWUNDO Or FOF_NOCONFIRMATION Or FOF_NOCONFIRMMKDIR
End With

SHFileOperation sh_op
' Es en esta ultima linea donde el EXE provoca el error que lo obliga a cerrarse

NOTA:
File1.Path = x:DLL
usb = y:

  Respuesta:  Carlos Rojas
Usa la api CopyFileA.