elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Enviar archivo a la Papelera de Reciclaje usando la API
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Enviar archivo a la Papelera de Reciclaje usando la API  (Leído 2,385 veces)
CM2ARY

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Enviar archivo a la Papelera de Reciclaje usando la API
« en: 17 Noviembre 2016, 03:15 am »

Por favor nesecito ayuda para poder enviar archivo a la Papelera de Reciclaje usando la API de Windows con VB.NET.

Gracias a todos por la ayuda


En línea

Konlex

Desconectado Desconectado

Mensajes: 35



Ver Perfil
Re: Enviar archivo a la Papelera de Reciclaje usando la API
« Respuesta #1 en: 17 Noviembre 2016, 03:26 am »

Aqui hay info sobre lo que buscas: Click aqui
saludos!


En línea

La felicidad no es continua todos los dias de tu vida,sino que se presenta en momentos en que menos te los esperas.No pienses que eres infeliz,solo que no te das cuenta que ella se presenta en breves momentos de tu vida,y no la sabes valorar.
okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Enviar archivo a la Papelera de Reciclaje usando la API
« Respuesta #2 en: 17 Noviembre 2016, 13:54 pm »

usando API tienes SHFileOperation

Aquí te dejo una clase NativeMethods con la función SHfileOpDelete creada por mí para enviar archivos a la papelera de reciclaje. Puedes establecer si quieres eliminarlo directamente  o  enviar a la papelera y si mostrar mensaje de confirmación o no:


para VB.NET
Código
  1. <System.Security.SuppressUnmanagedCodeSecurity()>
  2. Friend NotInheritable Class NativeMethods
  3.    Inherits Attribute
  4.    Private Sub New()
  5.    End Sub
  6.    ''' <summary>
  7.    ''' Copia un bloque de memoria de un lugar a otro.
  8.    ''' https://msdn.microsoft.com/es-es/library/windows/desktop/aa366535(v=vs.85).aspx
  9.    ''' </summary>
  10.    ''' <param name="Destination">Un puntero a la dirección inicial del destino del bloque copiado.</param>
  11.    ''' <param name="Source">Un puntero a la dirección inicial del bloque de memoria para copiar.</param>
  12.    ''' <param name="Length">El tamaño del bloque de memoria para copiar, en bytes.</param>
  13.    ''' <remarks></remarks>
  14.    <DllImport("KERNEL32", EntryPoint:="RtlMoveMemory")> _
  15.    Private Shared Sub CopyMemory(<MarshalAs(UnmanagedType.I1)> ByRef Destination As Byte,
  16.                           <MarshalAs(UnmanagedType.AsAny)> ByVal Source As Object, ByVal Length As Integer)
  17.    End Sub
  18.    'SHGetPathFromIDListW (En VB se usa este entrada)
  19.    ''' <summary>
  20.    '''Copia, mueve, cambia el nombre o elimina un objeto de sistema de archivos. Esta función se ha reemplazado en Windows Vista por IFileOperation.
  21.    '''https://msdn.microsoft.com/en-us/library/windows/desktop/bb762164(v=vs.85).aspx
  22.    ''' </summary>
  23.    ''' <param name="lpFileOp"></param>
  24.    ''' <returns></returns>
  25.    ''' <remarks></remarks>
  26.    <DllImport("shell32.dll", EntryPoint:="SHFileOperationA")> _
  27.    Public Shared Function SHFileOperation(<[In], [Out](), MarshalAs(UnmanagedType.Struct)> ByRef lpFileOp As SHFILEOPSTRUCT) As Integer
  28.    End Function
  29.    ' Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (ByRef lpFileOp As SHFILEOPSTRUCT) As Integer
  30.    <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _
  31.    Public Structure SHFILEOPSTRUCT
  32.        Public hWnd As IntPtr
  33.        Public wFunc As Integer
  34.        <MarshalAs(UnmanagedType.LPStr)> Public pFrom As String
  35.        <MarshalAs(UnmanagedType.LPStr)> Public pTo As String
  36.        Public fFlags As UShort
  37.        <MarshalAs(UnmanagedType.Bool)> Public fAnyOperationsAborted As Boolean
  38.        Public hNameMappings As IntPtr
  39.        <MarshalAs(UnmanagedType.LPStr)> Public lpszProgressTitle As String
  40.    End Structure
  41.  
  42.  
  43.    Private Const FOF_CONFIRMMOUSE As Short = &H2S
  44.    Private Const FOF_ALLOWUNDO As Short = &H40S   'Envía a la papelera de reciclaje
  45.    Private Const FOF_FILESONLY As Short = &H80S
  46.    Private Const FOF_MULTIDESTFILES As Short = &H1S
  47.    Private Const FOF_NOCONFIRMATION As Short = &H10S '  No pedir confirmación al usuario.
  48.    Private Const FOF_NOCONFIRMMKDIR As Short = &H200S
  49.    Private Const FOF_NO_CONNECTED_ELEMENTS As Short = &H1000S
  50.    Private Const FOF_NOCOPYSECURITYATTRIBS As Short = &H800S
  51.    Private Const FOF_NOERRORUI As Short = &H400S
  52.    Private Const FOF_RENAMEONCOLLISION As Short = &H8S
  53.    Private Const FOF_SILENT As Short = &H4S   '  no crear avance/informe
  54.    Private Const FOF_SIMPLEPROGRESS As Short = &H100S
  55.    Private Const FOF_WANTMAPPINGHANDLE As Short = &H20S
  56.    Private Const FOF_WANTNUKEWARNING As Short = &H2000S
  57.    Private Const FOF_NORECURSION As Short = &H1000S '// don't recurse into directories.
  58.     Private Const FO_DELETE As Short = &H3
  59.  
  60.    ''' <summary>
  61.    ''' Función para borrar archivos
  62.    ''' </summary>
  63.    ''' <param name="Ounerhwnd"></param>
  64.    ''' <param name="sFile">Archivo o carpeta a eliminar</param>
  65.    ''' <param name="RecycleMode">boleano: True-> envía a la papelera de reciclaje, False ->no envía a la papelera</param>
  66.    ''' <param name="DialogConfirmation">Boleano: True-> muestra un diálogo, False-> no muestra diálogo</param>
  67.    ''' <remarks></remarks>
  68.    Public Shared Sub SHfileOpDelete(ByVal Ounerhwnd As IntPtr, ByVal sFile As String, ByVal RecycleMode As Boolean, ByVal DialogConfirmation As Boolean)
  69.        Dim Result As Integer = Nothing
  70.        Dim lenFileop As Integer
  71.        Dim foBuf() As Byte
  72.        Dim SHFileOp As New SHFILEOPSTRUCT
  73.        lenFileop = Marshal.SizeOf(SHFileOp)    ' double word alignment increase
  74.  
  75.        ReDim Preserve foBuf(CInt(lenFileop)) ' the size of the structure.
  76.  
  77.        With SHFileOp
  78.            .hWnd = Ounerhwnd
  79.            .wFunc = FO_DELETE
  80.            .pFrom = sFile & vbNullChar & vbNullChar
  81.            .hNameMappings = IntPtr.Zero
  82.            If RecycleMode Then
  83.                If DialogConfirmation Then
  84.                    .fFlags = FOF_ALLOWUNDO 'Envía a la papelera de reciclaje con diálogo de confirmación
  85.                Else
  86.                    .fFlags = FOF_ALLOWUNDO Or FOF_NOCONFIRMATION 'Envía a la papelera de reciclaje sin  mensaje de confirmación
  87.                End If
  88.            Else
  89.                If DialogConfirmation Then
  90.                    .fFlags = FOF_SILENT 'Elimina diréctamente con diálogo de confirmación
  91.                Else
  92.                    .fFlags = FOF_NOCONFIRMATION Or FOF_SILENT 'Elimina directamente sin diálogo de confirmación
  93.                End If
  94.            End If
  95.        End With
  96.        CopyMemory(foBuf(1), SHFileOp, lenFileop)
  97.        CopyMemory(foBuf(19), foBuf(21), 12)
  98.        Try
  99.            Result = SHFileOperation(SHFileOp)
  100.  
  101.        Catch ex As Exception
  102.            MessageBox.Show(Err.Description)
  103.        End Try
  104.  
  105.    End Sub
  106. End Class


Para llamar a la función se hace de la siguiente manera:

Código
  1.     NativeMethods.SHfileOpDelete(Ounerhwnd:=Me.Handle,
  2.                                     sFile:="D:\01.rtf",
  3.                                     RecycleMode:=True,
  4.                                     DialogConfirmation:=True)

Ejemplo:
Código
  1. Imports System.Runtime.InteropServices
  2.  
  3. Public Class Form1
  4.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  5.     NativeMethods.SHfileOpDelete(Ounerhwnd:=Me.Handle,
  6.                                     sFile:="D:\01.rtf",
  7.                                     RecycleMode:=True,
  8.                                     DialogConfirmation:=True)
  9.    End Sub
  10. End Class




En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como enviar un archivo a la papelera de reciclaje
Programación Visual Basic
nhaalclkiemr 6 12,866 Último mensaje 2 Agosto 2007, 23:09 pm
por CeLaYa
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines