Как отключить эхо в консоли Windows? - PullRequest
1 голос
/ 10 февраля 2012

Как отключить эхо в приложении C на консоли Windows?

Я действительно не хочу захватывать символы с помощью _getch (я все еще хочу, чтобы Ctrl-C ) работал,Кроме того, _getch только отключает эхо для cmd, но не для cygwin.

Должен быть способ перенаправить канал или изменить настройки консоли.

Ответы [ 2 ]

5 голосов
/ 10 февраля 2012

Может SetConsoleMode (украдено у codeguru ):

#include <iostream>
#include <string>
#include <windows.h>


int main()
{
    HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); 
    DWORD mode = 0;
    GetConsoleMode(hStdin, &mode);
    SetConsoleMode(hStdin, mode & (~ENABLE_ECHO_INPUT));

    std::string s;
    std::getline(std::cin, s);

    std::cout << s << "\n";
    return 0;
}//main
0 голосов
/ 10 февраля 2012

Да, по моему мнению, самый простой способ сделать это - использовать freopen, чтобы в основном изменить файл, открытый за дескриптором файла stdout.

Вы можете перенаправить вывод консоли в файл, используя

freopen("C:\some_file.txt", "w", stdout);

Если вы не хотите сохранять вывод сразу, вы должны иметь возможность написать / dev / null как (/ dev / null в Unix), но в окнах (которых у меня нетВы можете попробовать "nul" или "\ Device \ Null"

Так что-то вроде следующего должно работать:

freopen("\Device\Null", "w", stdout);

Извините, я не могу попробовать это, так как я неесть окна, но это главная идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...