none
Botón,directorio

    Pregunta

  • Hola soy nuevo en esto y necesitaría de su ayuda, les explico lo que estoy queriendo hacer es:

    Quisiera que un botón seleccione un directorio y guarde esa dirección y habilite ah otro botón a que ejecute un exe de ese directorio 

    ej:

    Bn1: Selecciona  directorio ( c:/.../ejemplo)

    Bn2: Ejecuta el exe que se encuentra dentro de c:/.../ejemplo) las veces que quiera sin necesidad de volver a guardar la ruta del bn1

    espero haberme explicado bien

    desde ya muchas gracias




    domingo, 12 de marzo de 2017 18:49

Respuestas

  • Hola Amerak,

    ¿Sábes el nombre del archivo .exe a ejecutar ?

    Te muestro un ejemplo sencillo :

    - Los dos botones son : 'btnSeleccionarRuta' y 'btnEjecutarExe'.

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
        'Inhabilitamos el botón al cargar el formulario
        btnEjecutarExe.Enabled = False
    
    End Sub

    Luego declaramos una variable global para almacenar la ruta y en el evento Click de tu botón 'btnSeleccionarRuta' creas una nueva instancia de la clase FolderBrowserDialog el cual mostrará una ventana (explorador de carpetas) pidiendo al usuario seleccionar una carpeta.

    'Declaramos una variable que almacenará la ruta seleccionada
    Dim ruta As String = String.Empty
    
    Private Sub btnSeleccionarRuta_Click(sender As Object, e As EventArgs) Handles btnSeleccionarRuta.Click
    
        Using browser As New FolderBrowserDialog
    
            'Si el resultado del diálog fue Ok es porque seleccionón la ruta
            If browser.ShowDialog() = DialogResult.OK Then
                'Almacenamos la ruta seleccionada a nuestra variable
                ruta = browser.SelectedPath
    
                'Habilitamos el botón
                btnEjecutarExe.Enabled = True
            End If
        End Using
    End Sub


    Y por último, en el evento 'Click' del botón que ejecutará el archivo .exe.

    Private Sub btnEjecutarExe_Click(sender As Object, e As EventArgs) Handles btnEjecutarExe.Click
    
        'Nombre del archivo .exe que se ejecutará
        Dim miExe As String = "miApp.exe"
    
        'Buscamos el archivo .exe en el directorio y subdirectorios
        Dim rutaExe = Directory.GetFiles(ruta, "*.exe", SearchOption.AllDirectories).
                          Where(Function(x) Path.GetFileName(x).Equals(miExe)).FirstOrDefault()
    
        'Si encontró el archivo
        If rutaExe IsNot Nothing Then
            'Ejecutamos el exe
            Process.Start(rutaExe)
        Else
            MessageBox.Show(String.Format("No se encontró el archivo con nombre ""{0}""", miExe))
        End If
    
    End Sub


    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Amerak domingo, 12 de marzo de 2017 20:39
    domingo, 12 de marzo de 2017 19:29

Todas las respuestas

  • Hola Amerak,

    ¿Sábes el nombre del archivo .exe a ejecutar ?

    Te muestro un ejemplo sencillo :

    - Los dos botones son : 'btnSeleccionarRuta' y 'btnEjecutarExe'.

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
        'Inhabilitamos el botón al cargar el formulario
        btnEjecutarExe.Enabled = False
    
    End Sub

    Luego declaramos una variable global para almacenar la ruta y en el evento Click de tu botón 'btnSeleccionarRuta' creas una nueva instancia de la clase FolderBrowserDialog el cual mostrará una ventana (explorador de carpetas) pidiendo al usuario seleccionar una carpeta.

    'Declaramos una variable que almacenará la ruta seleccionada
    Dim ruta As String = String.Empty
    
    Private Sub btnSeleccionarRuta_Click(sender As Object, e As EventArgs) Handles btnSeleccionarRuta.Click
    
        Using browser As New FolderBrowserDialog
    
            'Si el resultado del diálog fue Ok es porque seleccionón la ruta
            If browser.ShowDialog() = DialogResult.OK Then
                'Almacenamos la ruta seleccionada a nuestra variable
                ruta = browser.SelectedPath
    
                'Habilitamos el botón
                btnEjecutarExe.Enabled = True
            End If
        End Using
    End Sub


    Y por último, en el evento 'Click' del botón que ejecutará el archivo .exe.

    Private Sub btnEjecutarExe_Click(sender As Object, e As EventArgs) Handles btnEjecutarExe.Click
    
        'Nombre del archivo .exe que se ejecutará
        Dim miExe As String = "miApp.exe"
    
        'Buscamos el archivo .exe en el directorio y subdirectorios
        Dim rutaExe = Directory.GetFiles(ruta, "*.exe", SearchOption.AllDirectories).
                          Where(Function(x) Path.GetFileName(x).Equals(miExe)).FirstOrDefault()
    
        'Si encontró el archivo
        If rutaExe IsNot Nothing Then
            'Ejecutamos el exe
            Process.Start(rutaExe)
        Else
            MessageBox.Show(String.Format("No se encontró el archivo con nombre ""{0}""", miExe))
        End If
    
    End Sub


    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Amerak domingo, 12 de marzo de 2017 20:39
    domingo, 12 de marzo de 2017 19:29
  • Muchas Gracias JC NaupaCrispin. Ahora para que el cliente no tenga que hacerlo cada vez que abra el programa tendríaque generar un guardado en un archivo .ini cierto?
    domingo, 12 de marzo de 2017 20:39