Konsolenanwendung wie cmd.exe

  • VB.NET

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

    Konsolenanwendung wie cmd.exe

    Hi,
    Ich habe mal versucht eine Konsolenanwendung zuschreiben mit Befehlen, nur leider funktioniert noch nicht alles optimal. Ich hoffe hier kann mir jemand bei meinen Problemen weiterhelfen. (Es sollen auch noch mehr Befehle als nur "start -" hinzukommen.)

    1. Gibt es noch eine andere Methode die Abfragen zumachen anstatt einer If-Abfrage, ob ein Befehl geschrieben wurde?
    2. Wenn ich 1 Befehl eingegeben habe, kann ich nichts anderes mehr eingeben. Das Fenster schließt sich dann sofort.
    3. Mir wird in der Fehlerliste 1 Warnung angezeigt: "Von der Funktion "start" wird nicht in allen Codepfaden ein Wert zurückgegeben. Wenn das Ergebnis verwendet wird, kann zur Laufzeit eine NULL-Verweisausnahme auftreten." Das Programm funktioniert trotzdem aber es sieht unschön aus.

    Danke schonmal im Vorraus!

    VB.NET-Quellcode

    1. Option Explicit On
    2. Imports System.Console
    3. Module Module1
    4. Dim antwort As String = Console.ReadLine
    5. Sub Main()
    6. If antwort.StartsWith("start -") = True Then
    7. Console.Beep()
    8. start()
    9. End If
    10. Console.Read()
    11. End Sub
    12. Private Function start()
    13. If antwort.Remove(0, 7) = "1" Then
    14. Call Shell("C:\Windows\notepad.exe")
    15. Console.WriteLine("notepad.exe wurde gestartet")
    16. ElseIf antwort.Remove(0, 7) = "2" Then
    17. Call Shell("C:\Windows\write.exe")
    18. Console.WriteLine("write.exe wurde gestartet")
    19. End If
    20. End Function
    21. End Module
    1. du könntest die eingabe splitten und den befehl via select case abfragen
    2. du könntest in einer schleife auf eingabe warten.
    3. du hast das in eine function gepackt, obwohl du gar nichts zurück geben willst, daher solltest du es in eine sub packen:

    VB.NET-Quellcode

    1. private sub start()
    2. '...
    3. end sub
    Hi,

    1. Nein, If-Abfrage ist schon richtig
    3. Mach aus der Funktion "start" eine Sub.

    4. Imports-Befehle für Klassen sind eher unschön
    5. Call und Shell sind veraltet. Benutz stattdessen lieber Process.Start()
    6. Beschäftige dich mal ausführlich mit den Grundlagen (gute Startpunkte: hier oder hier)

    MfG

    //Edit: zu spät
    Erst einmal danke an euch beiden, ihr habt mir echt weiter geholfen. Nur bei dem einem Problem habe ich noch keine Lösung gefunden. Undzwar ich kann immer nur ein Befehl eingeben und wenn ich danach nochmal Enter drücke schließt sich das ganze Programm. Und wenn eine Schleife die beste Möglichkeit wäre, welche sollte ich nehmen? Eine For oder Do Schleife?
    Hi, schau dir mal die konsole an die ich ma gemacht hab:
    [Beta] Console2
    sowas in etwa? also wenn das ungefähr das ist was du suchst, gib report dann kann ich dir tipps zum realisieren geben


    %P% :thumbup:
    Hello World