Forum Clubic

[VB.net] Lancer un .exe avec argument

Bonjour à tous,

Je fais un petit programme en vb.net pour un login script.
Le programme lit un fichier texte et l’affiche dans une textbox
(exemple : Bienvenue dans le domaine “test.ch”)

J’aimerais pouvoir mettre le fichier text qui doit etre lu en paramètre avec la ligne de commande.

exemple sur ms-dos : notepad.exe toto.txt

comment faire ? :confused:

démarrer->executer->cmd

sinon avec studio (si tu programme avec studio) dans les proprietes de ton projet du peux donner des arguments à la ligne de commande.

Euh je pense pas qu’il soit idiot à ce point, il parle de vb .net donc de programmation :wink:
La réponse se trouve ici.

Faut dire c’était pas clair son post, pour moi il dev un programme qui lit un fichier texte passé en argument :neutre:

Dans ce cas:
Public Function Main(ByVal CmdArgs() As String)

CmdArgs contient les arguments passés au programme…

Merci KarLKoX c’était donc ça:


  'Arguments de ligne de commande
        Console.WriteLine("Arguments de ligne de commande")
        Dim i As Integer
        Dim args As String() = Environment.GetCommandLineArgs()
        Dim j As Integer = args.Length
        For i = 0 To j - 1
            Console.WriteLine("Args({0}) = {1}", i, args(i))
        Next

Je connaissais cette FAQ mais j’ai pas eu le courage de la parcourir en entier pour trouver ce dont j’avais besoin , merci encore

juste dans ce cas précis c’est censé écrire dans la console et non pas lire l’argument (fichier txt) que je veux récupéré…

et même le Console.Writeline , n’a pas l’air de fonctionner , aurais-je oublié qqch??


        Console.Write("Hola ")
        Console.WriteLine("What is your name: ")
        Dim name As String = Console.ReadLine()
        Console.Write(name)
        Console.WriteLine("!")

ca n’ecrit rien dans la console :frowning:

ajoute ça dans ton formulaire:

Public Class Form1

Public Mon_Fichier as String
'[...]
Public Shared Sub Main(ByVal CmdArgs() As String)
If CmdArgs.Length > 0 Then
        'récupere le premier arguement
        form1.Mon_Fichier = CmdArgs(0)
End If
        Application.Run(frm_form1)
End Sub
'[...]
 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

If Mon_FIchier <> "" then 
        Msgbox (Mon_Fichier)
End if
'[...]
End Sub

Et dans les propriétés de ton projet indique l’Objet de démarage sur “Sub Main”

ca marche pas, c’est bizarre :frowning: , je vous montre mon code , j’ai surement du faire qqch de faux…


Imports System.IO
Imports System.IO.Stream
Imports System.Console
Imports System.Environment
Public Class frm_login
    Public Mon_Fichier As String
    '[...]
    Public Shared Sub Main(ByVal CmdArgs() As String)
        If CmdArgs.Length > 0 Then
            'récupere le premier arguement
            frm_login.Mon_Fichier = CmdArgs(0)
        End If
        Application.Run(frm_login)
    End Sub
    '[...]

    Private Sub frm_login_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        FichierTexte("toto.txt")


    End Sub


    Sub FichierTexte(ByVal toto As String)
        Dim sr As StreamReader
        Dim sw As StreamWriter
        Dim sLine As String
        Try
            If Not File.Exists(toto) Then
                'Le fichier n'existe pas. On le crée
                sw = New StreamWriter(toto)
                sw.WriteLine("Bonjour. Nous sommes le {0} et il est {1} ", _
     DateTime.Now.ToLongDateString, _
     DateTime.Now.ToLongTimeString)
                sw.Close()
                sw = Nothing
                'Remarque : On peut utiliser sw = File.AppendText(NomFichier) pour ajouter
                'du texte à un fichier existant
            End If
            'Ouverture du fichier et Ecriture du contenu du fichier sur la console
            sr = New StreamReader(toto)
            Console.WriteLine("Debut du fichier")
            sLine = sr.ReadLine()
            While Not sLine Is Nothing
                Console.WriteLine(sLine)
                txtbox.Text = sLine
                sLine = sr.ReadLine()
            End While
            Console.WriteLine("Fin du fichier")
            ' Let the user know what went wrong.
        Finally
            'Fermeture streamreader
            If Not IsNothing(sr) Then sr.Close()
            'Fermeture streamwriter
            If Not IsNothing(sw) Then sw.Close()
        End Try



    End Sub

End Class

si tu utilise pas l’argument c’est normal:

FichierTexte(Mon_Fichier)

c’est à dire que maintenant si tu lance ton programme comme ça:

Mon_Prog.exe C:\prout.txt

Mon_Fichier contiendra ça: C:\prout.txt

C’est bon ca marche tout bien , merci beaucoup à vous tous!