none
¿Como paso cada archivo de un ListBox por un Codigo? (Cada Item por un Codigo) [VS 2017] RRS feed

  • Pregunta

  • >Hello, World!_

    Tengo la Siguiente Pregunta:

    ¿Como paso cada Item de un ListBox por un Codigo?

    Me explico:

    Estoy haciendo un programa y tiene un ListBox, en ese ListBox se encuentran varios archivos, los cuales, quiero encriptar.

    Tengo todos los Items en este ListBox y necesito que cada uno de los Items pase por un Codigo el cual ira encriptando cada archivo por separado, si hay 10 archivos en el ListBox, se deben pasar esos 10 archivos.

    Codigos

    Este es para indexear los Archivos al ListBox

    Public Sub IndexearArchivos()
            Try
                ListBoxFileIndex.Items.Clear()
                For Each FICHA In Directory.GetFiles(DIRFiles)
                    ListBoxFileIndex.Items.Add(FICHA.ToString)
                Next
                ListBoxFileIndex.SelectedIndex = 0
                ListBoxFileIndex.Select()
            Catch ex As Exception
                MessageBox.Show("Error: IndexearArchivos" & vbCrLf & ex.Message)
            End Try
        End Sub

    Este es un Sub que se encarga de indicar el item que sera Encriptado, esto a medida se van seleccionando el el ListBoxFileIndex

        Sub CryptoFileIndex()
            Try
                For Each item As Object In Me.ListBoxFileIndex.Items
                    Dim NOMBRE As String = ListBoxFileIndex.SelectedItem
                    CallEncrypt()
                    NOMBRE = NOMBRE.Remove(0, NOMBRE.LastIndexOf("\") + 1)
                    ListBox1.Items.Add(NOMBRE)
                    ListBox1.SelectedItem = NOMBRE
                    ListBoxFileIndex.SelectedIndex = ListBoxFileIndex.SelectedIndex + 1
                    Dim a As Integer = ListBoxFileIndex.SelectedIndex
                    ListBoxFileIndex.SelectedIndex = a
                Next
            Catch ex As Exception
                MessageBox.Show("Error: Encriptar" & vbCrLf & ex.Message)
            End Try
        End Sub

    Cada vez que se selecciona un nuevo item, el ListBoxFileIndex manda a volver al codigo de arriba /\, vuelve a llamar, esto hasta que no hayan mas Items para seleccionar

        Private Sub ListBoxFileIndex_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBoxFileIndex.SelectedIndexChanged
            CryptoFileIndex()
        End Sub

    Este es el codigo que llama a Encriptar

        Sub CallEncrypt()
            Dim NOMBRE As String = ListBoxFileIndex.SelectedItem
            NOMBRE = NOMBRE.Remove(0, NOMBRE.LastIndexOf("\") + 1)
            Try
                Dim buffer As Byte()
                Using fs As New FileStream(DIRFiles & "\" & ListBox1.SelectedItem, FileMode.Open, FileAccess.Read)
                    Using ms As New MemoryStream()
                        Encrypt(fs, ms, CryptoPassword)
                        buffer = ms.ToArray()
                    End Using
                End Using
                Using fs As New FileStream(DIREncrypted & "\" & ListBox1.SelectedItem, FileMode.CreateNew, FileAccess.Write)
                    fs.Write(buffer, 0, buffer.Length)
                End Using
            Catch ex As Exception
                MessageBox.Show("Error: CallEncrypt" & vbCrLf & ex.Message)
            End Try
        End Sub

    y esta es la estructura que Encripta

        Friend Shared Sub Encrypt(inStream As Stream, outStream As Stream, pwd As String)
            Dim aes As New AesCryptoServiceProvider()
            aes.Mode = CipherMode.CFB
            aes.Key() = GetDeriveBytes(pwd, 32)
            aes.IV = GetDeriveBytes(pwd, 16)
            Dim stream As New CryptoStream(outStream, aes.CreateEncryptor(), CryptoStreamMode.Write)
            Dim length As Integer = 2048
            Dim buffer As Byte() = New Byte(length - 1) {}
            Try
                Dim i As Integer = inStream.Read(buffer, 0, length)
                Do While (i > 0)
                    stream.Write(buffer, 0, i)
                    i = inStream.Read(buffer, 0, length)
                Loop
            Finally
                stream.FlushFinalBlock()
                aes.Dispose()
                buffer = Nothing
            End Try
        End Sub

    Y eso:

    En Resumen:

    Quiero que cada archivo en un ListBox pase por el 'CallEncrypt()', pero como ven, me complique mucho, este metodo que les explique funciona correctamente, pero, el usuario es el que debe seleccionar el primer item para encriptar todo, y yo quiero que todo sea automatico, que con solo precionar un boto, tooodos los Items en el ListBox sean Encriptados.

    PD: Hay un "ListBox1", pero ese solo recorta el item seleccionado el ListBoxFileIndex, se queda con el Nombre y la Extencion

    Y bueno, necesito su ayuda!


    --- Cristopher Cáceres Developer | Worcome Studios




    • Editado ElCris009 domingo, 20 de enero de 2019 20:14 P.D.
    domingo, 20 de enero de 2019 20:09

Respuestas

  • Olvidenlo, ya lo hice

    Aquí el código (porque no soy malo)

        Sub CallToEncryptFiles()
            Try
                Try
                    ContadorNAMES = 0
                    For Each Fichero As String In My.Computer.FileSystem.GetFiles(DIRDecrypted)
                        CryptoActions.CallEncrypt(Fichero, DIREncrypted & "\" & MemoryListNAMES(ContadorNAMES) & ".enc")
                        ContadorNAMES = ContadorNAMES + 1
                    Next
                Catch ex As Exception
                End Try
                IndexearArchivos()
            Catch ex As Exception
            End Try
        End Sub
    El 'MemoryListNAMES' solo guarda los nombres de los archivos en el ListBox1. Esto para poner los nombres originales al encriptar el archivo


    --- Cristopher Cáceres Developer | Worcome Studios

    • Marcado como respuesta ElCris009 miércoles, 23 de enero de 2019 2:41
    miércoles, 23 de enero de 2019 2:40

Todas las respuestas

  • Hola buenas noches

    eso que quieres hacer es fácil solo tienes que iterar los items del listbox en una variable de tipo String usando For each Next y después pasarla al FileStream como parámetro de ruta de acceso todo esto en el metodo CallEncrypt()


    lunes, 21 de enero de 2019 2:07
  • Hola,

    Debes de hacer un arreglo, donde insertes todos tus archivos, y en base a un ciclado generar la encriptacion, es sencillo "si tu lo desarrollaste"

    lunes, 21 de enero de 2019 18:00
  • Olvidenlo, ya lo hice

    Aquí el código (porque no soy malo)

        Sub CallToEncryptFiles()
            Try
                Try
                    ContadorNAMES = 0
                    For Each Fichero As String In My.Computer.FileSystem.GetFiles(DIRDecrypted)
                        CryptoActions.CallEncrypt(Fichero, DIREncrypted & "\" & MemoryListNAMES(ContadorNAMES) & ".enc")
                        ContadorNAMES = ContadorNAMES + 1
                    Next
                Catch ex As Exception
                End Try
                IndexearArchivos()
            Catch ex As Exception
            End Try
        End Sub
    El 'MemoryListNAMES' solo guarda los nombres de los archivos en el ListBox1. Esto para poner los nombres originales al encriptar el archivo


    --- Cristopher Cáceres Developer | Worcome Studios

    • Marcado como respuesta ElCris009 miércoles, 23 de enero de 2019 2:41
    miércoles, 23 de enero de 2019 2:40