【问题标题】:How to disable echo in windows console?如何在 Windows 控制台中禁用回声?
【发布时间】:2012-02-09 20:05:03
【问题描述】:

如何在 Windows 控制台 C 应用程序中禁用回显?

我真的不想用_getch 捕获字符(我仍然希望Ctrl-C)起作用。此外 _getch 似乎只为cmd 禁用回显,但在cygwin 中没有。

必须有办法重定向管道或修改控制台设置。

【问题讨论】:

    标签: c windows console


    【解决方案1】:

    可能是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
    

    【讨论】:

    【解决方案2】:

    是的,我认为最简单的方法是使用 freopen 基本上更改在标准输出文件描述符后面打开的文件。

    您可以使用以下命令将控制台输出重定向到文件

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

    如果你不想一次存储输出,你应该可以写一个 /dev/null 像(/dev/null 在 Unix 中),但是在 windows 中(我没有你可以尝试“nul”或“\Device\Null”

    所以应该像下面这样工作:

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

    抱歉,因为我没有窗户,所以我实际上无法尝试,但这是主要想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-15
      • 2015-10-07
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 2020-04-01
      • 1970-01-01
      相关资源
      最近更新 更多