tu peux effacer l'écran après avoir entré le mot de passe en utilisant la commande "cls"
Je ne sais pas s'il existe un truc tout fait pour ce que tu cherches.
Sinon, tu peux récupérer manuellement les inputs clavier, et afficher toi même des "*" à la place.
J'avais écrit ça à une époque :
Code :
- char readAsciiConsoleInput()
- {
- HANDLE stdIn = GetStdHandle( STD_INPUT_HANDLE );
- ASSERT( stdIn != null_ptr );
- // loop and read input events one by one ; we stop at the first key down event or when the input buffer is empty.
- // notice that we remove all events, this may need to be improved if someone else need these events
- while( true )
- {
- DWORD numInputs = 0;
- BOOL result = GetNumberOfConsoleInputEvents( stdIn, &numInputs );
- ASSERT( result );
- if( numInputs == 0 )
- return 0; // input buffer is empty
- // we read a single input record
- INPUT_RECORD input;
- DWORD numRead;
- result = ReadConsoleInput( stdIn, &input, 1, &numRead );
- ASSERT( result );
- ASSERT( numRead == 1 );
- if( input.EventType == KEY_EVENT )
- {
- KEY_EVENT_RECORD& evt = input.Event.KeyEvent;
- if( evt.bKeyDown && evt.uChar.AsciiChar != 0 ) // we ignore key events that can not be translated in ascii
- {
- return evt.uChar.AsciiChar;
- }
- }
- }
- }
|
Ca récupère un caractère depuis l'entrée standard, sans l'afficher ; s'il n'y en a pas ça renvois 0. Tu peux l'appeler en boucle jusqu'à recevoir le caractère de retour à la ligne (touche entrée). J'avais fait ça parce que j'avais besoin de traiter d'autres choses en parallèle, donc je voulais une fonction non bloquante ; il y a sûrement plus simple...