Passwordchar en mode console

Résolu
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 - 19 juil. 2009 à 02:05
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 - 19 juil. 2009 à 12:40
Bonsoir à tous,
Donc voilà, j'ai une application à développer en mode console qui doit utiliser une saisie de mot de passe. Il évident que le mot de passe ne doit pas apparaître en clair sur l'écran!

Je voudrais qu'à chaque fois que j'appuie sur une touche, il s'affiche un autre caractère, une étoile par exemple (sans avoir à taper sur enter entre 2 lettres). Cette fonction c'est la passwordChar du mode graphique.

Bref: Comment remplacer un caractère par un autre pendant la saisie en mode console?

J'ai essayé des tas de choses mais je suis toujours bloqué par: Console.In.Read(); qui m'oblige à appuyer sur Enter...

Voilà mon problème j'espère que tous ça clair! Merci d'avance.

moi

2 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
19 juil. 2009 à 09:32
bonjour toi,

voici un petit exemple:

        static string GetPwd(string prompt)
        {
            Console.Write(prompt + ": ");
            ConsoleKeyInfo key;
            string pwd="";
            do
            {
                key = Console.ReadKey(true);
                if (char.IsControl(key.KeyChar))
                {
                    if (key.Key == ConsoleKey.Enter)
                        return (pwd);
                    if (key.Key == ConsoleKey.Escape)
                        return (null);
                    if (key.Key == ConsoleKey.Backspace)
                        pwd = pwd.Remove(pwd.Length - 1);
                }
                else
                    pwd += key.KeyChar;
                Console.Write("\r" + prompt + ": ");
                foreach (char c in pwd)
                    Console.Write('*');
                Console.Write(' ');

            } while (true);
        }


C# is amazing, enjoy it!
3
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 3
19 juil. 2009 à 12:40
bonjour robert trente-troisième du nom,
C'est exactement ce que j'attendais, j'avais essayer aussi avec readkey aussi mais récupérer le caractère courant avec keychar, je dois le dire, ne m'avais pas du tout traversé l'esprit!
Je te remercie et te souhaite un bon week end.

moi
0
Rejoignez-nous