Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: nhaalclkiemr en 2 Agosto 2007, 16:23 pm



Título: Como enviar un archivo a la papelera de reciclaje
Publicado por: nhaalclkiemr en 2 Agosto 2007, 16:23 pm
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 ;)


Título: Re: Como enviar un archivo a la papelera de reciclaje
Publicado por: LeandroA en 2 Agosto 2007, 17:49 pm
hola te paso un ejemplo

En un modulo
Código:
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
Código:
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


Título: Re: Como enviar un archivo a la papelera de reciclaje
Publicado por: under!!! en 2 Agosto 2007, 21:02 pm
Es necesario a la papelera de reciclaje por que lo puedes eliminar definitivamente con
Código
  1. Kill "C:\Prueba.txt"
  2.  
Pero esto te elimina el archivo de forma definitiva


Título: Re: Como enviar un archivo a la papelera de reciclaje
Publicado por: Freeze. en 2 Agosto 2007, 21:07 pm
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,....


Título: Re: Como enviar un archivo a la papelera de reciclaje
Publicado por: CeLaYa en 2 Agosto 2007, 21:35 pm
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


Título: Re: Como enviar un archivo a la papelera de reciclaje
Publicado por: nhaalclkiemr en 2 Agosto 2007, 22:23 pm
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


Título: Re: Como enviar un archivo a la papelera de reciclaje
Publicado por: CeLaYa en 2 Agosto 2007, 23:09 pm
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:


Código:
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