Vous devez utiliser l'API de console dans Windows. Voici un extrait qui désactive l'écho dans la fenêtre de la console. La fonction SetConsoleMode()
est utilisée pour contrôler l'écho (entre autres). Je sauve l'ancien mode, afin que je puisse restaurer la console une fois le mot de passe récupéré.
En outre, les fonctions *ConsoleMode()
nécessitent un handle pour le tampon d'entrée de la console. Comment vous pouvez obtenir un handle de ces tampons est décrit dans la documentation MSDN de CreateFile()
.
int main(int argc, char* argv[])
{
char password[100] = { 0 };
printf("Enter your password: ");
HANDLE hConsole = ::CreateFile("CONIN$", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
DWORD dwOldMode;
::GetConsoleMode(hConsole, &dwOldMode);
::SetConsoleMode(hConsole, dwOldMode & ~ENABLE_ECHO_INPUT);
bool bFinished = false;
while(!bFinished) {
if(!fgets(password, sizeof(password)/sizeof(password[0]) - 1, stdin)) {
printf("\nEOF - exiting\n");
} else
bFinished = true;
}
::SetConsoleMode(hConsole, dwOldMode | ENABLE_ECHO_INPUT);
printf("\nPassword is: %s\n", password);
return 0;
}
une raison particulière que vous utilisez 'getch' en C++ au lieu de' cin.get'? –
Aucune raison. Impossible de trouver d'autres moyens appropriés. –
@Cody: getch ne renvoie pas l'entrée, contrairement à cin.get() classique – ybungalobill