none
Come avvio un programma con i parametri? RRS feed

  • Domanda

  • Bene, ecco il problema

    ho un programma "programma.exe" che deve essere avviato con gli argomenti

    ora io posso già avviare il programma sul cmd usando

    Programma.exe -connect 192.168.0.1

    ora però devo passare il "-connect 192.168.0.1" da un programma visual studio all'eseguibile programma.exe

    ho gia provato diverse soluzioni e tutte quante non hanno funzionato.

    grazie

    giovedì 5 luglio 2018 18:03

Risposte

  • Ciao,

    il lancio di un eseguibile esterno con parametri si ottiene semplicemente, attraverso la classe Process e la sua proprietà di tipo ProcessStartInfo. Pensando di dover per esempio avviare un'istanza del blocco note, che apra automaticamente un certo file "mio_file.txt", potremmo scrivere

    Dim p As New Process()
    p.StartInfo = New ProcessStartInfo("notepad.exe", "c:\tmp\mio_file_txt")
    p.Start()

    Pensando di dover lanciare un eseguibile generico, con i suoi parametri (quindi, lanciando il tuo exe VB.NET, dove indicherai su linea di comando quale exe lanciare, e con quali parametri), puoi generalizzare scrivendo

    Dim argomenti() = Environment.GetCommandLineArgs()
    
    Dim p As New Process()
    p.StartInfo = New ProcessStartInfo(argomenti(1), argomenti(2))
    p.Start()

    In pratica, l'unica cosa che facciamo di diverso è acquisire gli argomenti di lancio nell'array "argomenti", per poi usarne gli indici 1 e 2 (infatti, all'indice zero troviamo il percorso del nostro applicativo VB.NET).
    Con il codice sopra, potrai per esempio lanciare "mioProgrammaVB.exe notepad.exe c:\tmp\mio_file.txt", ed il tuo programma lancerà quindi un'istanza di notepad tentando di aprire il file c:\tmp\mio_file.txt

    Spero questo esempio ti sia utile.


    Emiliano Musso

    venerdì 6 luglio 2018 05:38
    Moderatore

Tutte le risposte

  • Ciao,

    il lancio di un eseguibile esterno con parametri si ottiene semplicemente, attraverso la classe Process e la sua proprietà di tipo ProcessStartInfo. Pensando di dover per esempio avviare un'istanza del blocco note, che apra automaticamente un certo file "mio_file.txt", potremmo scrivere

    Dim p As New Process()
    p.StartInfo = New ProcessStartInfo("notepad.exe", "c:\tmp\mio_file_txt")
    p.Start()

    Pensando di dover lanciare un eseguibile generico, con i suoi parametri (quindi, lanciando il tuo exe VB.NET, dove indicherai su linea di comando quale exe lanciare, e con quali parametri), puoi generalizzare scrivendo

    Dim argomenti() = Environment.GetCommandLineArgs()
    
    Dim p As New Process()
    p.StartInfo = New ProcessStartInfo(argomenti(1), argomenti(2))
    p.Start()

    In pratica, l'unica cosa che facciamo di diverso è acquisire gli argomenti di lancio nell'array "argomenti", per poi usarne gli indici 1 e 2 (infatti, all'indice zero troviamo il percorso del nostro applicativo VB.NET).
    Con il codice sopra, potrai per esempio lanciare "mioProgrammaVB.exe notepad.exe c:\tmp\mio_file.txt", ed il tuo programma lancerà quindi un'istanza di notepad tentando di aprire il file c:\tmp\mio_file.txt

    Spero questo esempio ti sia utile.


    Emiliano Musso

    venerdì 6 luglio 2018 05:38
    Moderatore
  • Grazie per la risposta rapida, ma non funziona ancora, dove sto sbagliando?

    includo uno screen:

    venerdì 6 luglio 2018 11:21
  • L'errore dice che non sta trovando il file specificato, ovvero il programma da lanciare.
    Vedo che hai creato una variabile di nome "eseguibile", ed il percorso + file dovrebbe essere presente in tale variabile, viceversa la chiamata a process fallisce.

    Dove valorizzi "eseguibile"? Che valore ha?


    Emiliano Musso

    venerdì 6 luglio 2018 11:31
    Moderatore
  • Ha capito, ora funziona grazie,

    segnerò il tuo primo post come riposta 

    venerdì 6 luglio 2018 16:12