none
Abfrage eines Passwortes in einer VB2008 Express Konsolenanwendung RRS feed

  • Frage

  • Hi Leute,

    ich bin ein ziemlicher Neuling in der Programmierung. Ich wollte jetzt mal zum Lernen eine Konsolenanwendung
    unter VB2008 Express schreiben, die unter anderem auch eine Passwort Abfrage enthält.
    Nun bin ich aber an einer Stelle angekommen, wo ich nicht mehr weiß wie ich es anstellen muß, das die Eingabe nicht auf dem Bildschirm angezeigt wird.

    Bisher habe ich es auf folgende Basis erstellt:

    Dim User As String()
    Dim Password As String()
    ...
    ...
    ...
    Console. WriteLine("Bitte Benutzername eingeben:")
    Name=Console.ReadLine()

    Console.WriteLine("Bitte Passwort eingeben:"
    Password=Console.ReadLine()
    ...
    ...
    ...

    Aber wie muß ich jetzt vorgehen, damit bei der Eingabe das Passwort nicht angezeigt wird?

    Kann mir da jemand helfen???

    Vielen Dank schonmal im Vorraus!

    Mfg. The Night
    Sonntag, 22. November 2009 06:46

Antworten

  • Hi, ich sehe folgende zwei Möglichkeiten:

    1.: Man könnte die Zeichen einzeln einlesen, denn für einzelne Zeichen stellt die Methode ReadKey eine Möglichkeit dar, die Zeichen nicht auf der Konsole anzuzeigen, Man muss nur dann beim Drücken auf Enter (Keycode 13) aus der Schleife rauskommen.

    Dim s As System.ConsoleKeyInfo
    Do
        s = Console.ReadKey(True)
        If s.Key = 13 Then
            Exit Do
        Else
            Password = Password & s.KeyChar
        End If
    Loop

    2.: Textfarbe = Hintergrundfarbe und Cursor unsichtbar setzen.

    Console.CursorVisible = False
    Console.ForegroundColor = Console.BackgroundColor
    Password = Console.ReadLine()
    Console.ForegroundColor = ConsoleColor.Gray
    Console.CursorVisible = True

    mfg
    Imperium_Romanum
    MAY THE SOURCE BE WITH YOU!
    • Als Antwort vorgeschlagen Thorsten Dörfler Sonntag, 22. November 2009 17:25
    • Als Antwort markiert The Night Sonntag, 22. November 2009 18:03
    Sonntag, 22. November 2009 09:57
  • Hi The Night,

    Das mit den * erfordert nur 2 weitere Zeilen:

    Dim s As System.ConsoleKeyInfo
    Do
        s = Console.ReadKey(True)
        If s.Key = 13 Then
            Console.WriteLine()
            Exit Do
        Else
            password = password & s.KeyChar
            Console.Write("*")
        End If
    Loop
    mfg
    Imperium_Romanum
    MAY THE SOURCE BE WITH YOU!
    Mittwoch, 25. November 2009 14:13
  • Hallo Imperium_Romanum,

    genau das war es, was ich die ganze Zeit versucht hatte zu erreichen. Durch deine Antwort, hast du mir gerade richtig gut geholfen.

    Vielen Dank nochmals.
    MfG TheNight
    • Als Antwort markiert The Night Mittwoch, 25. November 2009 17:47
    Mittwoch, 25. November 2009 17:46

Alle Antworten

  • Hi, ich sehe folgende zwei Möglichkeiten:

    1.: Man könnte die Zeichen einzeln einlesen, denn für einzelne Zeichen stellt die Methode ReadKey eine Möglichkeit dar, die Zeichen nicht auf der Konsole anzuzeigen, Man muss nur dann beim Drücken auf Enter (Keycode 13) aus der Schleife rauskommen.

    Dim s As System.ConsoleKeyInfo
    Do
        s = Console.ReadKey(True)
        If s.Key = 13 Then
            Exit Do
        Else
            Password = Password & s.KeyChar
        End If
    Loop

    2.: Textfarbe = Hintergrundfarbe und Cursor unsichtbar setzen.

    Console.CursorVisible = False
    Console.ForegroundColor = Console.BackgroundColor
    Password = Console.ReadLine()
    Console.ForegroundColor = ConsoleColor.Gray
    Console.CursorVisible = True

    mfg
    Imperium_Romanum
    MAY THE SOURCE BE WITH YOU!
    • Als Antwort vorgeschlagen Thorsten Dörfler Sonntag, 22. November 2009 17:25
    • Als Antwort markiert The Night Sonntag, 22. November 2009 18:03
    Sonntag, 22. November 2009 09:57
  • Hi Imperium-Romanum,

    du meinst also, das ich meine Passwort Abfrage als ein Function Routine in mein Programm einfügen solll. Das ist eine super Idee,
    die ich gleich mal ausprobieren werde.
    Vielleicht kann ich das ganze dann noch so erweitern, das statt der eingegebenen Zeichen für jedes Zeichen einen Stern (*) ausgebe?

    Danke dir, ich weiß nicht, warum ich nicht selbst darauf gekommen bin.
    In zeiten von Quick-Basic habe ich sowas mit Hilfe des Befehls 'INKEY$' gemacht.

    Falls ich nochmal eine Frage zur Programmierung habe, weder ich auf jedenfall wieder hier in diesem Forum meine Frage stellen.

    Vielen Dank nochmal.

    Für weitere Ideen bin ich dennoch offen.
    • Bearbeitet The Night Sonntag, 22. November 2009 18:04 Weitere Vorschläge sind gewünscht.
    Sonntag, 22. November 2009 10:12
  • Hi The Night,

    Das mit den * erfordert nur 2 weitere Zeilen:

    Dim s As System.ConsoleKeyInfo
    Do
        s = Console.ReadKey(True)
        If s.Key = 13 Then
            Console.WriteLine()
            Exit Do
        Else
            password = password & s.KeyChar
            Console.Write("*")
        End If
    Loop
    mfg
    Imperium_Romanum
    MAY THE SOURCE BE WITH YOU!
    Mittwoch, 25. November 2009 14:13
  • Hallo Imperium_Romanum,

    genau das war es, was ich die ganze Zeit versucht hatte zu erreichen. Durch deine Antwort, hast du mir gerade richtig gut geholfen.

    Vielen Dank nochmals.
    MfG TheNight
    • Als Antwort markiert The Night Mittwoch, 25. November 2009 17:47
    Mittwoch, 25. November 2009 17:46