2012-10-18 14 views
2

Мне нужна DLL, чтобы пользователи могли вводить пароль, а не эхо на экране. Поэтому я использую _getch() для получения символов, без эха, как это,_getch() не работает на сервере Windows 2012

 //get character with no echo 
     ch = _getch(); 

и компилировать использовать код майкрософт VS2005.
Он работает на сервере Windows 2003/2008, но на новом сервере Windows 2012 он отображает символы на экране.
Моя проблема в том, почему _getch() эхо-символы только на сервере Windows 2012? и как это исправить?

+0

'ReadConsoleInput'? – Mehrdad

+0

наконец-то, что '_getch()' работает хорошо, проблема в том, что я использую 'fgetpos' и' fsetpos', чтобы проверить, есть ли какой-либо поток в 'stdin'. Я заменяю их на 'fseek (stdin, 0, SEEK_END)', его работы хорошо в 2012 году. – jmuok

+0

Разве вы не используете '_isatty', чтобы проверить, является ли поток' stdin'? – Mehrdad

ответ

0

Используйте cin.get() вместо getch().

+0

Вопрос отмечен как c, так и C++; 'cin.get()' недоступен в C. –

+0

, но его в C++! не так ли? –

+0

Да, но (а) если OP помечен как вопрос как c и C++, он, вероятно, ищет решение, которое будет работать на обоих языках, и (b) 'cin.get()' не отключает эхо. –