2012-02-09 2 views
1

Windows 콘솔 C 응용 프로그램에서 에코를 비활성화하려면 어떻게합니까?Windows 콘솔에서 에코를 비활성화하는 방법은 무엇입니까?

_getch (아직 Ctrl-C)으로 문자를 캡처하고 싶지 않습니다. _getch 외에도 cmd은 에코를 사용하지 않고, cygwin은 사용하지 않는 것으로 보입니다.

파이프를 리디렉션하거나 콘솔 설정을 수정하는 방법이 있어야합니다.

답변

3

어쩌면 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

같은 생각 http://code.google.com/p/xpost/source/browse/src/lib /xpost_compat.c#87)는 윈도우즈 케이스를 훌륭하게 커버합니다. –

0

네, 가장 쉬운 방법은 내 의견을 freopen을 사용하여 기본적으로 stdout 파일 설명자 뒤에 열린 파일을 변경하는 것입니다. 당신이 한 번에 출력을 저장하지 않으려면

당신은 (는/dev /와 같은을/dev/null을 쓸 수 있어야,

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

을 사용하여 파일로 콘솔 출력을 리디렉션 할 수있다 널 난 당신이

그래서 다음과 같이 작동합니다 "NUL"또는 "\ 장치 \의 널 (null)"을 시도 할 수없는 것을() 유닉스에 있지만 창에서 :

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

미안 해요 나는 실제로 그것을 시도 할 수 없다. 창문은 없지만 그게 주요 아이디어입니다.

관련 문제