Pues eso, como puedo enviar un archivo a la papelera, yo intente mover el archivo a una de las subcarpetas de "C:\RECYCLED" pero despues no aparece ni en la papelera ni llendo a esa carpeta...la unica manera de ver el archivo es desde la consola con el comando "dir"...weno, a lo k iba, ¿Como enviar un archivo a la papelera?
Saludos ;)
hola te paso un ejemplo
En un modulo
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As Any) As Long
Private Enum FOF_Flags
FOF_MULTIDESTFILES = &H1
FOF_CONFIRMMOUSE = &H2
FOF_SILENT = &H4
FOF_RENAMEONCOLLISION = &H8
FOF_NOCONFIRMATION = &H10
FOF_WANTMAPPINGHANDLE = &H20
FOF_ALLOWUNDO = &H40
FOF_FILESONLY = &H80
FOF_SIMPLEPROGRESS = &H100
FOF_NOCONFIRMMKDIR = &H200
FOF_NOERRORUI = &H400
FOF_NOCOPYSECURITYATTRIBS = &H800
FOF_NORECURSION = &H1000
FOF_NO_CONNECTED_ELEMENTS = &H2000
FOF_WANTNUKEWARNING = &H4000
End Enum
Private Enum FO_Functions
FO_MOVE = &H1
FO_COPY = &H2
FO_DELETE = &H3
FO_RENAME = &H4
End Enum
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As FO_Functions
pFrom As String
pTo As String
fFlags As FOF_Flags
fAnyOperationsAborted As Long
hNameMappings As Long
End Type
Public Function TransferFileToRecycleBin(Filename As String, Optional Confirm As Boolean = False, Optional Silent As Boolean = True) As Boolean
Dim FileOp As SHFILEOPSTRUCT
With FileOp
.wFunc = FO_DELETE
.pFrom = Filename
.fFlags = True
If Not Confirm Then .fFlags = .fFlags + FOF_NOCONFIRMATION
If Silent Then .fFlags = .fFlags + FOF_SILENT
End With
TransferFileToRecycleBin = SHFileOperation(FileOp)
End Function
y para provar en un formulario con un boton
Private Sub Command1_Click()
TransferFileToRecycleBin "C:\prueva.txt", True, False
End Sub
fijate si le modificas el ultimo parametro a true vas aver el formulario de progreso
Es necesario a la papelera de reciclaje por que lo puedes eliminar definitivamente con
Kill "C:\Prueba.txt"
Pero esto te elimina el archivo de forma definitiva
Si no te funciona este metodo C:\RECYCLED es porque adentro de esa carpeta si esta la papelera de reciclaje, ahorita no te digo porque ando en un ciber,....
hasta donde se la carpeta RECYCLED es creada por el windows cuando hay varios perfiles creados, es decir esta carpeta contiene los documentos eliminados de todos los usuarios que estan registrados, si checas dentro de esta carpeta tendras otras con nombres como "S-1-5-21-2631635193-2657483262-854572989-500", S-1-5-21-4286428392-2419660090-1300944423-1109", .... y si entras a esas carpetas veras los documentos que casa usuario elimino en su perfil
Ya, como dije ya muevo el archivo a una de las subcarpetas de C:\RECYCLED como puede ser "S-1-5-21-2631635193-2657483262-854572989-500"...pero asi no va...
Tengo k provar aun tu modulo LeandroA...Ya te diré. Y gracias a todos.
Saludos
probe el código y como que no funciona bien, si pide confirmación, borra el archivo, pero no lo pone en la papelera, creo que podriamos simplificar la funcion asi:
Public Function TransferFileToRecycleBin(Filename As String) As Boolean
Dim FileOp As SHFILEOPSTRUCT
With FileOp
.wFunc = FO_DELETE
.pFrom = Filename
.fFlags = FOF_ALLOWUNDO
End With
TransferFileToRecycleBin =not( SHFileOperation(FileOp))
'El not es para que cuando lo borre regrese el valor de TRUE
End Function