Por favor borren el tema de aqui:
http://foro.elhacker.net/programacion_general/duda_remplazar_archivo_sin_pedir_confirmacion_de_windows-t244013.0.html
creo q lo hice en un lugar inadecuado era en la sección vb
-------------------------------------------------------------------------------------------
Estaba utilizando este code para remplazar archivos.. pero
CitarSHCopyFile "archivo.bmp", "C:\archivo.bmp"
quisiera saber si existe una mejor funcion.. que permita que al remplazar los archivos no pida confirmacion de windows para remplazar a otro archivo con el mismo nombre...
Muchas gracias por leer este tema
Tambien tengo otra duda.. si me pudieran dar un ejemplo de como hacer para
buscar un archivo en el directorio con un boton examinar y que la direccion se muestre en un textbox
usar un command para remplazar cierto archivo... a una ruta que indiquemos en vb
(http://img258.imageshack.us/img258/3323/dibujofb6.jpg)
por ejemplo q encontremos c:\archivo.txt
Sobre lo del botón de examinar busca ejemplos sobre CommonDialog en google, es muy simple...
Respecto a lo de reemplazar un archivo... se me ocurre eliminarlo y luego escribir uno en la misma ruta con el mismo nombe...
no sé es una idea.. ;D
salu10!!
Que tal si primero compruebas si existe, en caso de existir lo eliminas y copias el nuevo file?
El VB ya tiene sus propias funciones para copia y eso...
Aqui te hago una funcioncita ;)
Public Sub Reemplazar(ByVal sRuta1 As String, ByVal sRuta2 As String)
'Si existe el fichero...
If Len(Dir$(sRuta2, vbArchive)) > 0 Then
'Primero comprobamos que no tengo atributos ReadOnly(Solo lectura)
If (GetAttr(sRuta2) And vbReadOnly) Then
'Le quitamos el solo lectura
Call SetAttr(sRuta2, GetAttr(sRuta2) - vbReadOnly)
End If
'Lo eliminamos
Call Kill(sRuta2)
End If
'Copiamos el fichero...
Call FileCopy(sRuta1, sRuta2)
End Sub
Y lo del cuadro de dialogo tienes aqui unos lnks ;)
http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-commondialog.htm
http://www.recursosvisualbasic.com.ar/htm/listado-api/api-27.htm
Te recomiendo si estas empezando el primero ;)
Saludos ;D
para reemplazar un archivo podes hacer asi:
' el primer parametro es el archivo de origen, el 2º parametro es el destino final
FileCopy "C:\archivo1.bmp", "C:\archivo.bmp"
Cita de: xkiz en 3 Febrero 2009, 20:28 PM
para reemplazar un archivo podes hacer asi:
' el primer parametro es el archivo de origen, el 2º parametro es el destino final
FileCopy "C:\archivo1.bmp", "C:\archivo.bmp"
Si el esta con atributo Solo Lectura no podras hacer eso...
Saludos ;D
mira si quieres usar el api SHFileOperation para copiar un file y si existe reemplazarlo debes usar FOF_NOCONFIRMATION para que no te muestre el mensaje del cual hablas.
aqui te dejo el code:
Option Explicit
Private Declare Function SHFileOperation Lib "shell32.dll" _
Alias "SHFileOperationA" ( _
lpFileOp As SHFILEOPSTRUCT) As Long
Private Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Long
fAnyOperationsAborted As Boolean
hNameMappings As Long
lpszProgressTitle As String
End Type
Private Enum eFO
FO_COPY = &H2&
FO_DELETE = &H3&
FOF_SILENT = &H4&
FOF_NOCONFIRMATION = &H10&
FOF_NOCONFIRMMKDIR = &H200&
FOF_NOERRORUI = &H400&
FOF_NOCOPYSECURITYATTRIBS = &H800&
End Enum
Public Sub mCopyFile(sSource As String, sTarget As String)
Dim SHFileOp As SHFILEOPSTRUCT
sSource = sSource & vbNullChar & vbNullChar
sTarget = sTarget & vbNullChar & vbNullChar
With SHFileOp
.wFunc = FO_COPY
.fFlags = FOF_NOCONFIRMMKDIR + FOF_NOCONFIRMATION
.hWnd = Form1.hWnd
.pFrom = sSource
.pTo = sTarget
End With
Call SHFileOperation(SHFileOp)
End Sub
Cita de: XcryptOR en 4 Febrero 2009, 02:43 AM
mira si quieres usar el api SHFileOperation para copiar un file y si existe reemplazarlo debes usar FOF_NOCONFIRMATION para que no te muestre el mensaje del cual hablas.
aqui te dejo el code:
Option Explicit
Private Declare Function SHFileOperation Lib "shell32.dll" _
Alias "SHFileOperationA" ( _
lpFileOp As SHFILEOPSTRUCT) As Long
Private Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Long
fAnyOperationsAborted As Boolean
hNameMappings As Long
lpszProgressTitle As String
End Type
Private Enum eFO
FO_COPY = &H2&
FO_DELETE = &H3&
FOF_SILENT = &H4&
FOF_NOCONFIRMATION = &H10&
FOF_NOCONFIRMMKDIR = &H200&
FOF_NOERRORUI = &H400&
FOF_NOCOPYSECURITYATTRIBS = &H800&
End Enum
Public Sub mCopyFile(sSource As String, sTarget As String)
Dim SHFileOp As SHFILEOPSTRUCT
sSource = sSource & vbNullChar & vbNullChar
sTarget = sTarget & vbNullChar & vbNullChar
With SHFileOp
.wFunc = FO_COPY
.fFlags = FOF_NOCONFIRMMKDIR + FOF_NOCONFIRMATION
.hWnd = Form1.hWnd
.pFrom = sSource
.pTo = sTarget
End With
Call SHFileOperation(SHFileOp)
End Sub
Hola estoy interesado con lo de FOF_NOCONFIRMATION aplique lo que me explicaste pero me sigue saliendo igual
(http://img13.imageshack.us/img13/3457/dibujous4.jpg)
sera que tenga que aplicar algo mas ?
CitarSHCopyFile "Archivo.txt", "C:\Archivo.txt"
o el codigo que uso lo estoy aplicando mal...
A mi no me pide confirmación, el uso de esta función desde donde lo llames seria así:
por ejemplo haciendo la llamada desde el form:
Private Sub Form_Load()
call mCopyFile(sSource As String, sTarget As String)
End Sub
PD: no te olvide de estas constantes FOF_NOCONFIRMMKDIR , FOF_NOCONFIRMATION
Cita de: XcryptOR en 5 Febrero 2009, 01:52 AM
A mi no me pide confirmación, el uso de esta función desde donde lo llames seria así:
por ejemplo haciendo la llamada desde el form:
Private Sub Form_Load()
call mCopyFile(sSource As String, sTarget As String)
End Sub
PD: no te olvide de estas constantes FOF_NOCONFIRMMKDIR , FOF_NOCONFIRMATION
me vota error de sintaxis sera por q estoy usando vb6..?
(http://img14.imageshack.us/img14/4816/dibujojs1.jpg)
Perdon hermano, ese fue un error garrafal, casi me muero cuando lo veo aquí esta la forma correcta:
Private Sub Form_Load()
call mCopyFile("origen", "destino") ' donde origen es el file que quieres copiar y destino es la ruta donde quieres copiarte
End Sub
gracias por hacerme caer en cuenta de este mostruoso error
:rolleyes: