Como enviar un archivo a la papelera de reciclaje

Iniciado por nhaalclkiemr, 2 Agosto 2007, 16:23 PM

0 Miembros y 1 Visitante están viendo este tema.

nhaalclkiemr

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 ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

LeandroA

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

under!!!

Es necesario a la papelera de reciclaje por que lo puedes eliminar definitivamente con
Código (vb) [Seleccionar]

Kill "C:\Prueba.txt"

Pero esto te elimina el archivo de forma definitiva

Freeze.

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,....

CeLaYa

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
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

nhaalclkiemr

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
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

CeLaYa

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
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.