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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Ayuda con almacenar ruta
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con almacenar ruta  (Leído 2,068 veces)
SγиtαxEяяoя

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Ayuda con almacenar ruta
« en: 13 Julio 2013, 18:35 pm »

Hola tengo un problema algo grande, estoy con el proyecto de crear un programa que cree una carpeta o que se seleccione una carpeta personalizada para guardar Screenshots

Algo asi


Al abrir el programa se crea automaticamente la ruta "C:\Users\Tavito\Desktop\Screenshots"

Código
  1. Imports System.IO 'Todo el codigo esta resumido por partes
  2. Public Class Form1
  3.    Private Folder As String 'Crea la ruta de la carpeta "Screenshots"
  4.  
  5.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  6.        Folder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Screenshots")
  7.        If Not Directory.Exists(Folder) Then 'Si no existe dicho directorio
  8.            Directory.CreateDirectory(Folder) 'Entonces lo crear
  9.        End If
  10.        LabelFolder.Text = Folder 'Y en el "LabelFolder" muestra la ruta que se creo
  11.    End Sub
  12.  

Pero, si yo quiero seleccionar otra carpeta



Código
  1. Private Sub CheckFolder_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckFolder.CheckedChanged
  2.        If CheckFolder.Checked = True Then
  3.            FolderBrowserDialog1.ShowDialog()
  4.            LabelFolder.Text = FolderBrowserDialog1.SelectedPath() 'Aqui va la ruta de la carpeta que se selecciono
  5.        Else
  6.            LabelFolder.Text = Folder 'Si por algun motivo quiero usar nuevamente la carpeta "Screenshots". Pero la elimine por accidente
  7.            CheckFolder.Checked = False
  8.            Folder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Screenshots")
  9.            If Not Directory.Exists(Folder) Then
  10.                Directory.CreateDirectory(Folder)
  11.            End If
  12.        End If
  13.    End Sub
  14.  

El proceso de crear la carpeta no me da ningun problema, el problema esta aqui al tomar la captura de pantalla

Resumire el codigo por partes

Código
  1. Imports System.Drawing
  2. Imports System.Windows.Forms
  3. Imports System.Drawing.Imaging
  4. Public Class Form1
  5.  
  6.    Private Folder As String 'Crea la ruta de la carpeta
  7.    Private Nombre As String = "Image " 'Aqui asigna el nombre a todas las imagenes
  8.    Private Template As String
  9.  
  10. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  11.        'Aqui almacena los formatos de las imagenes
  12.        ComboBox1.DataSource = New ImageFormat() {ImageFormat.Bmp, ImageFormat.Gif, ImageFormat.Jpeg, ImageFormat.Png, ImageFormat.Tiff}
  13.    End Sub
  14.  
  15.  
  16.    Dim bmp As Bitmap
  17.    Dim graphics As Graphics
  18.  
  19.    Private Sub ButtonScreen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonScreen.Click
  20.        Dim SearchPattern As String = String.Concat(Nombre, "??.", ComboBox1.SelectedItem)
  21.        Dim Files As String() = Directory.GetFiles(Folder, SearchPattern)
  22.        Dim Numb As Integer = 0
  23.        If Files.Length > 0 Then
  24.            Array.Sort(Files)
  25.            Numb = Integer.Parse(Files(Files.Length - 1).Substring(Template.Length, 2)) + 1
  26.        End If
  27.        Dim Bmp As New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb)
  28.        Using Grap As Graphics = graphics.FromImage(Bmp)
  29.            Grap.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy)
  30.            Dim Format As ImageFormat = DirectCast(ComboBox1.SelectedItem, ImageFormat)
  31.            Bmp.Save(String.Concat(Template, Numb.ToString("00"), ".", Format), Format)
  32.        End Using
  33.    End Sub

El problema esta aqui
Código
  1. Dim Files As String() = Directory.GetFiles(Folder, SearchPattern)

De que Folder, no vale lo que yo selecciono en el "BrowserDialog1.SelectedPath"

Solo funciona si dejo la ruta que yo mismo proporciono al abrir el programa

Folder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Screenshots")


Ahora si la duda como hago para que
Código
  1. Dim Files As String() = Directory.GetFiles(Folder, SearchPattern)
Almacene la ruta seleccionada en el "LabelFolder" y guarde las imagenes en la carpeta seleccionada


« Última modificación: 13 Julio 2013, 18:39 pm por SγиtαxEяяoя » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: Ayuda con almacenar ruta
« Respuesta #1 en: 13 Julio 2013, 18:51 pm »

Código
  1. Private Sub CheckFolder_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckFolder.CheckedChanged
  2.        If CheckFolder.Checked = True Then
  3.            FolderBrowserDialog1.ShowDialog()
  4.            LabelFolder.Text = FolderBrowserDialog1.SelectedPath() 'Aqui va la ruta de la carpeta que se selecciono
  5.        Else
  6.            LabelFolder.Text = Folder 'Si por algun motivo quiero usar nuevamente la carpeta "Screenshots". Pero la elimine por accidente
  7.            CheckFolder.Checked = False
  8.            Folder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Screenshots")
  9.            If Not Directory.Exists(Folder) Then
  10.                Directory.CreateDirectory(Folder)
  11.            End If
  12.        End If
  13.    End Sub
  14.  

El problema es que en ningún caso estás asignando la carpeta seleccionada (FolderBrowserDialog1.SelectedPath) a la variable Folder, así que la variable Folder siempre es: blablabla.Desktop & "Screenshots"

¿Resuelve eso tu duda?

Otra cosa (Sin importancia) a tener en cuenta en el código, es esto:
Código
  1. CheckFolder.Checked = False

Lo explico con código:
Código
  1. If CheckFolder.Checked = True Then
  2.          bla bla bla
  3.      Else ' Else, sólo puede haber una condicion contradictoria en un Boolean, y es "False", "CheckFolder.Checked = False"
  4.          CheckFolder.Checked = False ' Así que esto no hace nada, porque si se procesa esta parte del bloque significa que la propiedad "Checked" ya está en "False".
  5. End If

Saludos


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: Ayuda con almacenar ruta
« Respuesta #2 en: 13 Julio 2013, 19:03 pm »

Un ejemplo:

Código
  1. Public Class Form1
  2.  
  3.    ReadOnly DefaultFolder As String = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Screenshots")
  4.  
  5.    Public FolderDialog As New FolderBrowserDialog With {.SelectedPath = DefaultFolder}
  6.  
  7.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Shown
  8.  
  9.        MsgBox(FolderDialog.SelectedPath) ' Esta es la ruta que quieres, al iniciar el programa.
  10.  
  11.        If FolderDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
  12.            MsgBox(FolderDialog.SelectedPath) ' Y esta es después, cuando el usuario la elige.
  13.        End If
  14.  
  15.        ' Crear snapshot en {FolderDialog.SelectedPath}
  16.        ' Sin variables de por medio.
  17.  
  18.    End Sub
  19.  
  20. End Class

Saludos
« Última modificación: 13 Julio 2013, 19:07 pm por EleKtro H@cker » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines