VB.Net CMD Befehl aus Textbox

  • VB.NET
  • .NET (FX) 3.0–3.5

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

    VB.Net CMD Befehl aus Textbox

    Hallo, ich möchte gern ein CMD Befehl ausführen z.b. netsh wlan set hostednetwork mode=allow ssid=... key=... das weiß ich wie das geht , allerdings
    möchte ich da wo die "..." stehen textbox1 & textbox2 .text hin haben. Also das er den code so ausführt: netsh wlan set hostednetwork mode=allow ssid=textbox1.text key=textbox2.text
    kriege allerdings dann im "eigenem" LOG den OUTPUT:

    Spoiler anzeigen

    "Namekey" ist kein gültiges Argument für diesen Befehl.
    Ein oder mehrere Parameter für den Befehl sind falsch.

    Syntax: set hostednetwork [mode=]allow|disallow [ssid=]<SSID>
    [key=]<Passphrase> [keyUsage=]persistent|temporary
    [/Spoilter]

    Mein Code:

    Visual Basic-Quellcode

    1. Private Sub connect_to_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    2. Me.Icon = My.Resources.wifi_icon
    3. Me.Text = "Sie sind Verbunden mit: " & wifi.TextBox1.Text
    4. Dim textvar As String = wifi.TextBox1.Text
    5. Dim textvar2 As String = wifi.TextBox2.Text
    6. Dim Process As New Process
    7. Dim StartInfo As New ProcessStartInfo("cmd.exe", "/k netsh wlan set hostednetwork mode=allow ssid=" & textvar & "key=" & textvar2)
    8. StartInfo.StandardOutputEncoding = System.Text.Encoding.GetEncoding(437)
    9. StartInfo.UseShellExecute = False
    10. StartInfo.RedirectStandardOutput = True
    11. StartInfo.RedirectStandardError = True
    12. Process.StartInfo = StartInfo
    13. Process.Start()
    14. Dim sOutput As String
    15. Using oStreamrader As System.IO.StreamReader = Process.StandardOutput
    16. sOutput = oStreamrader.ReadToEnd
    17. End Using
    18. Console.WriteLine(sOutput)
    19. RichTextBox1.Text = sOutput
    20. End Sub


    Vielen Dank schonmal. :)
    mach dir eine String-Variable zurecht, wo deine CommandArgs reinkommen, und übergib sie dem StartInfo.
    Dann kannste Haltepunkt setzen und konkret nachgucken, was du da übergibst.
    Meist fallen einem dann die SyntaxFehler wie Schuppen vons Auge.

    Also in Etwa so:

    VB.NET-Quellcode

    1. Dim Process As New Process
    2. dim commandArgs = "/k netsh wlan set hostednetwork mode=allow ssid=" & textvar & "key=" & textvar2
    3. Dim StartInfo As New ProcessStartInfo("cmd.exe", commandArgs) ' hier Haltepunkt setzen und gugge, was tatsächlich in commandArgs drinne ist.
    4. '...

    @alle anderen: bitte keine schnellen Lösungsvorschläge posten.
    Die mögen vlt. (mehr oder weniger zufällig, weil man kann ja nur raten, was inne Textboxen steht) richtig sein, aber solch würde den TE davon abhalten, zu lernen, wie er bei solchen Problemen durch Debuggen den Fehler selber finden kann.
    @Kevios12 Willkommen im Forum. :thumbup:
    @ErfinderDesRades Jou.
    Haltepunkte und Debuggen gugst Du Debuggen, Fehler finden und beseitigen
    Probiere Deihe Argumente aus, indem Du sie in eine Batch-Datei reinschreibst und diese ausführst.
    Wenn das läuft, schreibst Du den Befehl in eine String-Variable und bringst das Programm zum laufen.
    Wenn das läuft, holst Du Dir den String aus der TextBox.
    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!
    Konnte es so lösen. :)
    Allerdings bekomme ich die CMD nicht wie es mit /c eigentlich sein soll das Fenster nicht versteckt... hmmm

    VB.NET-Quellcode

    1. Dim process As New Process()
    2. process.StartInfo.Verb = "Mobiler WiFi Hotspot"
    3. process.StartInfo.UseShellExecute = False
    4. process.StartInfo.CreateNoWindow = false
    5. process.Start("cmd", String.Format("/c {0} & {1} & {2}", "netsh wlan set hostednetwork mode=allow ssid=" & textvar & " key=" & textvar2, "netsh wlan start hostednetwork", "exit"))

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

    Damit du das CMD-Fenster nicht siehst, kannst du es wie folgt machen

    Quellcode

    1. Dim process As New Process()
    2. process.StartInfo.Verb = "Mobiler WiFi Hotspot"
    3. process.StartInfo.UseShellExecute = False
    4. process.StartInfo.CreateNoWindow = false
    5. process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
    6. process.Start("cmd", String.Format("/c {0} & {1} & {2}", "netsh wlan set hostednetwork mode=allow ssid=" & textvar & " key=" & textvar2, "netsh wlan start hostednetwork", "exit"))
    Jetzt bin ich etwas irritiert, reicht process.StartInfo.CreateNoWindow = True nicht ?
    (Kann es im Moment nicht testen)