Benutzer mit den meisten Antworten
Abfrage eines Passwortes in einer VB2008 Express Konsolenanwendung

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
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
-
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!- Als Antwort markiert Robert Breitenhofer Mittwoch, 25. November 2009 15:19
-
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
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
-
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.
-
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!- Als Antwort markiert Robert Breitenhofer Mittwoch, 25. November 2009 15:19
-
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