Programm mit Argumenten

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Programm mit Argumenten

    Hey :D

    In letzter Zeit arbeite ich öfters mit Programmen,
    bzw. *.exe Dateien, an welche ich Argumente übergeben muss.

    Ich würde gerne wissen wie ich ein eigenes solches Programm
    erstellen kann, wie diese arbeiten, und wie man diese Programme nennt.

    Reiner Wissensdrang :P
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Wenn Du diese Argumente meinst: "C:\Ordner\Programm.exe /d /h /t -42" dann trifft das zu:
    Die Argumente kann man an jede .exe übergeben. Es ist nur die Frage des Programmes, was es mit diesen Argumenten anstellt.
    Diese Programme unterscheiden sich vom Prinzip her in keiner Weise voneinander.

    Wenn Du Dos Ähnliche Programme meist, die ... ja, wie Dos arbeiten wird's schon etwas schwieriger.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    Ninoxo schrieb:

    wie ich ein eigenes solches Programm erstellen kann,

    Wie NIko sagt: jedes Programm ist ein solches Programm.
    Diese Argumente heißen Kommandozeilen-Argumente, und kann man abrufen als

    ObjectBrowser schrieb:

    Public Shared Function GetCommandLineArgs() As String()
    Member von System.Environment
    Zusammenfassung:
    Gibt ein Zeichenfolgenarray mit den Befehlszeilenargumenten für den aktuellen Prozess zurück.

    Rückgabewerte:
    Ein Array von Zeichenfolgen, in dem jedes Element ein Befehlszeilenargument enthält.Das erste Element ist der Name der ausführbaren Datei. Weitere eventuell folgende Elemente enthalten die restlichen Befehlszeilenargumente.

    Ausnahmen:
    System.NotSupportedException: Das System unterstützt keine Befehlszeilenargumente.
    Also nutze ich bei einem Standart-VB Programm GetCommandLineArgs
    und zähle die Args ggf. durch um zu schauen was.

    Starte ich mein Programm nun so:

    VB.NET-Quellcode

    1. Process.Start("C:\Users\User\Desktop\Programm.exe","-s Hallo", "-x Guten Tag"


    Wie kann ich in der Programm.exe nun abfragen welches
    Argument -s ist (In dem Fall also Hallo) ?

    Mein Ansatz sieht bisher so aus, ist aber nicht sehr ordnentlich:

    VB.NET-Quellcode

    1. Dim i As Integer
    2. For Each s As String In Environment.GetCommandLineArgs
    3. If i > 0 Then
    4. Label1.Text = s
    5. End If
    6. i += 1
    7. Next


    Dieser Code soll im Label1 den mitgegebenen Text von -s anzeigen,
    das tut es auch. Naja gut, nicht wirklich...

    Gibt es eine Lösung einfach (ggf. mit GetCommandLineArgs) ein Argument auszulesen,
    auch wenn dieses mehrere Worte hat ?

    Beispiel:

    VB.NET-Quellcode

    1. Process.Start("C:\Users\User\Desktop\Programm.exe","-s Hallo", "-x Guten Tag"


    Mir wird bei -x nur Guten ausgegeben.
    Weil ich (denke ich) GetCommandLineArgs(1) abfrage.

    Ich bin nicht wirklich sicher ob das hier nu jemand verstanden hat.
    Irgendwie bin ich mir selbst auch nicht so sicher,
    aber ich denke das wird schon :P
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Wenn ich mich recht erinnere werden Leerzeichen bei Kommandozeilenargumenten als Trennzeichen verwendet.
    Bei MSDos geht start C:\Test Datei.txt auch nicht -> Der Befehl "C:\Test" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

    Wenn ich Programme schreibe, die untereinander kommunizieren ersetze ich bei den Pfadangaben die Leerzeichen durch "%Space%" und schreibe vorher "From?" dazu, denn ? sind in Pfadangaben nicht erlaubt und das Programm weiß dann sicher, das die Leerzeichen des Pfades durch "%Space%" ersetzt wurden.

    Ansonsten gäbe es noch die Möglichkeit %20 für Leerzeichen zu verwenden. Ich glaube das habe ich bei Windows schon öfters gesehen. Bin mir aber dennoch nicht sicher.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils