Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB.NET] Argomento del metodo Start di System.Diagnostics.Process

    buongiorno,
    sto tentando di lanciare da una applicazione console application VB.NET, un eseguibile che prende alcuni parametri in ingresso usando il metodo System.Diagnostics.Process.Start in questo modo:
    codice:
    Dim strProcess As String = "c:\applicazione.exe parametro1 parametro2 parametro3"
    
    Dim myProcess As Process = System.Diagnostics.Process.Start(strProcess)
    e fin qui tutto bene.

    Il problema nasce quando, a runtime, viene generata la seguente eccezione:
    codice:
    Lanciata Eccezione System.ComponentModel.Win32Exception nel debugger:
    Impossibile trovare il file specificato
    StartWithShellExecuteEx()
    Start()
    Start()
    Start()
    AvviaClick()
    OnClick()
    OnClick()
    OnMouseUp()
    WmMouseUp()
    WndProc()
    WndProc()
    WndProc()
    OnMessage()
    WndProc()
    DebuggableCallback()
    System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop()
    RunMessageLoopInner()
    RunMessageLoop()
    Run()
    OnRun()
    DoApplicationModel()
    Run()
    Main()
    che sembra dipendere dal fatto che la stringa
    codice:
    strProcess
    contiene degli spazi visto che, se imposto la variabile
    codice:
    Dim strProcess As String = "c:\applicazione.exe"
    non ci sono piu' problemi.
    La domanda e': come si puo' evitare che il carattere spazio usato per la separazione dei parametri dia questo problema? Ho anche provato a cercare dei caratteri di escape da usare ma ho trovato solo esempi senza spazi.
    Saluti e grazie anticipatamente.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Racchiudi il percorso/file tra virgolette ...

    Dim strProcess As String = """c:\applicazione.exe"""

    (le virgolette all'inizio e alla fine sono proprio 3)

  3. #3
    ciao oregon,
    ho provato con
    codice:
    Dim strProcess As String = """c:\applicazione.exe parametro1 parametro2 parametro3"""
    ma il problema e' identico, infatti, l'esempio che mi hai fatto fa riferimento alla stringa:
    codice:
    strProcess = """c:\applicazione.exe"""
    che funziona anche come
    codice:
    strProcess = "c:\applicazione.exe"

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non ho capito la risposta ... per capirci, puoi fare un esempio pratico e completo di eseguibile e parametri con spazi?

  5. #5
    allora, c'e' una applicazione da riga di comando dal nome "applicazione.exe" che per funzionare prende in ingresso 3 parametri:
    codice:
    c:\>applicazione.exe parametro1 parametro2 parametro3
    se adesso voglio richiamare "applicazione.exe" da VB.NET faccio:
    codice:
    Dim strProcess As String = "c:\applicazione.exe parametro1 parametro2 parametro3"
    Dim myProcess As Process = System.Diagnostics.Process.Start(strProcess)
    a questo punto a runtime viene generata l'eccezione di cui ho parlato all'apertura della discussione.

    La domanda e' : come e' possibile richiamare "c:\applicazione.exe parametro1 parametro2 parametro3" da VB.NET (con System.Diagnostics.Process.Start) senza incappare nell'eccezione che sicuramente e' dovuta alla presenza di spazi nella stringa
    codice:
    Dim strProcess As String = "c:\applicazione.exe parametro1 parametro2 parametro3"
    ?

    Soluzione (appena trovata).
    Il metodo Start di System.Diagnostics.Process ammette come parametri: il nome della applicazione da eseguire e i parametri della applicazione stessa.
    Per essere piu' chiaro ho risolto cosi:
    codice:
    Dim myProcess As Process = _
    System.Diagnostics.Process.Start("c:\applicazione.exe", "parametro1 parametro2 parametro3")
    Saluti.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.