Título: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: 70N1 en 19 Junio 2008, 23:58 pm Llevo un rato con esto y no doy con la solucion...
El archivo se copia a si mismo en la carpeta system32, me podreis decir que es lo que estoy haciendo mal?. 'Modulo: ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" _ (lpFileOp As SHFILEOPSTRUCT) As Long Private Const FO_COPY = &H2 Private Const FOF_ALLOWUNDO = &H40 Public Sub SHCopyFile(ByVal from_file As String, ByVal to_file As String) Dim sh_op As SHFILEOPSTRUCT With sh_op .hWnd = 0 .wFunc = FO_COPY .pFrom = from_file & vbNullChar & vbNullChar .pTo = to_file & vbNullChar & vbNullChar .fFlags = FOF_ALLOWUNDO End With SHFileOperation sh_op End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'En el form_load: Dim copy As String copy = SHCopyFile([app.patch & "\msgwin32.exe"], [Environ$(windir)& "\system32\msgwin32.exe"])App.Activate (copy) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'El modulo lo saque de una pagina web. 'Lo que esta en negrita es donde me tira el error. Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: cobein en 20 Junio 2008, 00:03 am No se porque usas SHFileOperation, podrias usar filecopy (VB), copyfile (API) o cualquier otra cosa.
Si queres usar SHFileOperation tene en cuenta que la estructura de SHFILEOPSTRUCT que esta en el Api-Guide y que muchos usan esta mal fFlags tiene que ser long. Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: 70N1 en 20 Junio 2008, 00:11 am Ya me perdi.
Perdona mi ingnorancia, pero a que te refieres.... exactamente. Explicate porfavor que no lo entiendo muy bien. fFlags = FOF_ALLOWUNDO Es a esto a lo que te refieres?. Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: cobein en 20 Junio 2008, 00:18 am http://www.elguille.info/vb/ejemplos/SHFILEOP.HTM
Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: JmHk en 20 Junio 2008, 01:41 am por que no usas el filecopy es mucho mas sencillo
Sintaxiz: filecopy Archivo origen, archivo destino :laugh: :laugh: Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: 70N1 en 20 Junio 2008, 01:44 am Con el filecopy se puede copiar un archivo en uso?.
Perdona por tardar. Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: seba123neo en 20 Junio 2008, 01:47 am se puede copiar si esta en uso,por lo menos desde el explorador se puede,proba abrir algo en word por ejemplo,no podes modificarlo ni borralo,pero copiarlo si podes...
saludos. Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: 70N1 en 20 Junio 2008, 01:52 am A ok. Gracias entonces. Mañana me pondre manos a la obra e intentare usar el filecopy.
Buenas noches. Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: Ch3ck en 20 Junio 2008, 02:11 am Otra cosa es que si te encuentras programando y compilas el code la función del FileCopy no te funcionará (por lo menos en mi pc es así), simplemente observa que todo está bien y cuando compiles el ejecutable el Filecopy te funcionará.
Saludos. Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: seba123neo en 20 Junio 2008, 02:20 am pues a mi si me funciona cuando compilo... :xD
Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: Ch3ck en 20 Junio 2008, 02:30 am :xD :xD :xD Pues que raro. a que se deberá????
Saludos. Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: krackwar en 20 Junio 2008, 02:58 am No conozco muy bien esa api pero...
Código: copy = SHCopyFile([[b]app.patch [/b]& "\msgwin32.exe"], [Environ$(windir)& "\system32\msgwin32.exe"])App.Activate (copy) Código: app.path Código: app.path & "\" & app.exename & ".exe" Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: Hans el Topo en 20 Junio 2008, 11:07 am el filecopy no permite realizar copias de ficheros abiertos te recomiendo :
Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: Xerok1! en 20 Junio 2008, 12:03 pm Si que deja :rolleyes: :rolleyes:
Código
Un saludo :P Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: aum en 20 Junio 2008, 23:13 pm si deja, y cuando estas en el codigo no funciona xq no existe el archivo compliado para poder copiarlo
Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: 70N1 en 22 Junio 2008, 19:50 pm Si que deja. Muchas gracias.
Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: SERBice en 23 Junio 2008, 13:39 pm Código
poruqe "partes" el nombre del archivo de destino??? :-\ Código
1: filecopy deja copiar un archivo en uso siempre que sea el de origen ;). si es el de destino dara error :-\. 2: con otras funciones pasa lo mismo. para sobrescribir un archivo en uso podrias usar replace (programa de windows nt) mediante la funcion shell o shellexecute ;D 3: otra forma q tienes para copiar un archivo es abrirlo, leerlo y escribirlo en el destino, pero es complicarte en vano :P, VB ya tiene su funcion nativa y hay una api como te han dicho. Saludos. Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??. Publicado por: Xerok1! en 23 Junio 2008, 13:56 pm Citar poruqe "partes" el nombre del archivo de destino??? Código Private Sub Command1_Click()On Error Resume NextFileCopy App.Path + "\" + App.EXEName + ".exe", App.Path + "\destino.exe"End Sub Simplemente por que donde he colocado "asdf" iba un numero aleatorio obtenido anteriormente por rnd, por lo que al ponerlo aquí se me olvido "unirlo" Un saludo :P |