2010-03-16 3 views
2

Actuellement j'utilise cette implémentation pour masquer l'entrée d'utilisateur lors de la saisie du mot de passe:Comment faites-vous un mot de passe masqué sur Windows en utilisant l'écrasement de caractères?

void setEcho(bool enable) { 
    HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); 
    DWORD mode; 
    GetConsoleMode(hStdin, &mode); 

    if(enable) { 
    mode |= ENABLE_ECHO_INPUT; 
    } else { 
    mode &= ~ENABLE_ECHO_INPUT; 
    } 

    SetConsoleMode(hStdin, mode); 
} 

L'utilisateur doit être en mesure d'avoir des réactions positives que l'entrée de texte est fait. Quelles techniques sont disponibles dans un environnement Win32 utilisant C++?

Répondre

0

La solution est de ne pas utiliser stdio.h mais d'utiliser conio.h. La routine suivante résout le problème ci-dessus. Notez que la désactivation de l'écho n'est plus nécessaire:

void scanPass(char* passwordEntry, int length) { 
    int index, ch; 

    for(index = 0; index < (length - 1) && ((ch = _getch()) != EOF) 
             && (ch != 13); index++) { 
    passwordEntry[index] = (char)ch; 
    _putch('*'); 
    } 

    passwordEntry[index] = '\0'; 
} 

La réponse dans ce cas est d'utiliser l'outil approprié pour le travail. (Et pour connaître le bon outil.)

Questions connexes