Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lancer n'importe quel fichier vb.net

    26 octobre 2022 à 10:10:23

    Bonjour,

    J'ai un projet d'application avec Vb.net que je n'arrive pas a finaliser.

    Je m'explique, mon form me permettra de visualiser les fichiers existant (soit par le bié d'une recherche avec chemin d’accès soit directement en sélectionnant les fichiers via un fichiertoolmenu) puis des les executer en double click dessus ou avec un bouton ouvrir sur le côté de l'application.

    J'ai donc le visuel de mes fichiers sur un ListBox ou ListView (j'ai tout essayé)

    Je vous envoie mon code du ListView

    Imports System.IO
    
    Public Class Form1
        Private openFile As OpenFileDialog 'fenetre pour ouvrir les fichiers
    
        Private Sub OpenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OpenToolStripMenuItem.Click
            Try
                'Proprietes de openfiledialog
                openFile = New OpenFileDialog
                'Configuration des fichiers à ouvrir 
                openFile.Filter = "(*.*)|*.*"
                'Titre de la fenetre OpenFile
                openFile.Title = "Selectionne les fichiers."
                'Test des fichiers
                openFile.CheckFileExists = True
                'Autoriser la multiple selection
                openFile.Multiselect = True
                'Ne pas reouvrir les dernier dossier 
                openFile.RestoreDirectory = False
    
                If openFile.ShowDialog = Windows.Forms.DialogResult.OK Then
                    'Compter les fichiers selectionnés
                    openFile.SafeFileName.Count()
                    For i As Integer = 0 To openFile.SafeFileNames.Count()
                        'Mettre les nom de fichiers dans la box 1
                        'ListBox1.Items.Add(openFile.SafeFileNames(i))
                        'Mettre les chemin d'acces dans la box 2
                        ListBox1.Items.Add(openFile.FileNames(i))
                    Next
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    
            End Try
        End Sub
        Private Sub Button_Open(sender As Object, e As EventArgs) Handles Button1.Click
    
        End Sub
    
        Private Sub ExitToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExitToolStripMenuItem.Click
            Me.Close()
        End Sub
    
    
    End Class

    En espérant pouvoir être aider .

    Merci :)

    • Partager sur Facebook
    • Partager sur Twitter
      26 octobre 2022 à 11:14:32

      c'est quoi qui bloque ? "exécuter" un programme ? Process.Start("chemin\fichier") devrait résoudre ça
      • Partager sur Facebook
      • Partager sur Twitter
        26 octobre 2022 à 11:19:47

        J'ai fait ce process mais un bug s'affiche

        System.ComponentModel.Win32Exception : 'An error occurred trying to start process 'C:\Users\samue\Documents\Professionnel\CV_SAMUEL.pdf' with working directory 'C:\Users\samue\Documents\Professionnel\FinalProject\FinalProject\bin\Debug\net6.0-windows'. The specified executable is not a valid application for this OS platform.'

            Private Sub Button_Open(sender As Object, e As EventArgs) Handles Button1.Click
                Process.Start(ListBox1.SelectedItem)
            End Sub

        Voilà ce que j'ai mis a l'event click du bouton

        -
        Edité par relsca 26 octobre 2022 à 11:20:18

        • Partager sur Facebook
        • Partager sur Twitter
          26 octobre 2022 à 11:39:08

          et que contient vraiment ListBox1.selectItem à ce moment? pour être sûr (un affichage dans la console de debug suffira juste au dessus)

          Tu arrives à ouvrir ton fichier sinon en l'ouvrant classiquement ?

          Il faut que tu ai une application par défaut pour ouvrir les pdf (acrobat reader, un navigateur, ...); pas de miracle sur ce point.

          Edit: d'ailleurs tu as une erreur dans ta boucle for, tu vas un cran trop loin en parcourant de 0 à FileNames.Count()  (va jusqu'à FileNames.Count()-1 ou fait un

          For Each f in openFile.FileNames
              ListBox1.Items.add(f)
          Next

          Sinon Je viens de voir que le problème apparait avec .NET6 mais pas avec Framework 4.8

          Edit2: la problématique vient du fait que le paramètre UseShellExecute est false par défaut en  .NET Core (.NET6) et true en .NET Framework https://learn.microsoft.com/fr-fr/dotnet/api/system.diagnostics.processstartinfo.useshellexecute?view=net-6.0#system-diagnostics-processstartinfo-useshellexecute 

          Il faut donc créer le process et modifier ce paramètre.

          Private Sub Button_Open(sender As Object, e As EventArgs) Handles Button1.Click
                  Dim myprocess As New ProcessStartInfo(ListBox1.SelectedItem)
                  myprocess.UseShellExecute = True
                  Process.Start(myprocess)
          End Sub



          -
          Edité par umfred 26 octobre 2022 à 12:14:50

          • Partager sur Facebook
          • Partager sur Twitter
            28 octobre 2022 à 11:12:23

            Merci pour cette réponse efficace! En effet il fallait mettre le UseShellExecute = True .

            Et pour te répondre concernant la ListBox1.SelectedItem, elle contient à ce moment tout ce que j'ai sélectionner dans mes Documents ou autre endroit de l'ordi.

            Merci Umfred :)))

            • Partager sur Facebook
            • Partager sur Twitter

            Lancer n'importe quel fichier vb.net

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown