Externes Programm mit Parameter starten

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Externes Programm mit Parameter starten

    Hallo,

    ich möchte aus einer VB.NET Anwendung eine andere VB.NET Anwendung mit übergebenen Paramentern starten.
    Das aufrufen der exterenen Anwendung ist kein Problem. Das geht entweder mit Process.Start oder mit ProcessStartInfo.

    Mein Problem ist, wie ich in der externen Anwendung auf den überegebenen Parameter zugreifen kann, bzw. wie die Anwendung überhaupt Parameter entgegen nimmt. So geht's jedenfall nicht

    VB.NET-Quellcode

    1. Sub main(wert1 As String)
    2. Form1.Label1.Text = wert1
    3. Form1.Show()
    4. End Sub


    Wahrscheinlich geht das ganz einfach und ich im Moment einfach nur zu blind. Wäre nett, wenn ihr mir da auf die Sprünge helfen könntet.
    ^^.

    Danke
    Gonzo
    Mit "Command" kannst du auf übergebene Parameter zugreifen, einfach als Variable As String behandeln, z.B.

    VB.NET-Quellcode

    1. MessageBox.Show(Command)
    ;)
    Hmm, danke aber irgendwie verstehe ichs trotzdem nicht. Meine externe Anwendung startet über ne Sub Main Prozedur. Wie bringe ich diese jetzt dazu einen Parameter entgegen zu nehmen?

    Der Parameter soll dann weiter verarbeitet werden und später in ner Form angezeigt werden. Ich hab da im Moment wohl ein Brett vorm Kopf.
    Danke, aber das funzt nur, wenn ich das Programm über die Befehlszeile mit Parametern starte. Ich will das Prog aber aus einem anderen Prog starten.

    Variante 1:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Process.Start(myPath & "\Prog2", TextBox1.Text)
    3. End Sub


    Oder Variante 2:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Dim ProcessProperties As New ProcessStartInfo
    3. ProcessProperties.FileName = myPath & "\Prog2"
    4. ProcessProperties.Arguments = TextBox1.Text
    5. ProcessProperties.WindowStyle = ProcessWindowStyle.Normal
    6. Dim myProcess As Process = Process.Start(ProcessProperties)
    7. End Sub


    In beiden Fällen liefert mir Environment.GetCommandLineArgs.Count nur 1, nämlich den Namen und Pfad des Programmes selber. Aus der MSDN geht auch hervor, das GetCommandLineArgs nur Befehlszeilenargumente verarbeitet. Wie gesagt, ich starte das Programm aber ncht von der Befehlszeile, sondern es wird von nem anderen Programm aufgerufen.

    EDIT: Ich habe gerade herausgefunden, dass man vor das Argument noch einen Bindestrich setzten muß. 8o
    Warum hab ich das bloß nirgendwo gelesen :S
    Naja, aber so klappts jedenfalls:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Process.Start(myPath & "\Prog2", " -" & TextBox1.Text)
    3. End Sub


    Danke für eure Hilfe.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „gonzo16“ ()

    gonzo16 schrieb:

    Ich habe gerade herausgefunden
    dass das sogar richtig elegant geht:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Dim myPath As String = "Notepad.exe"
    3. Dim pr As New Process
    4. pr.StartInfo.FileName = myPath
    5. pr.StartInfo.Arguments = TextBox1.Text
    6. pr.Start()
    7. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!