2011-03-28 1 views
3

BASH와 같은 명령 인터프리터를 작성 중이며 \ 다음에 개행 문자가 오는 것은 입력 스트림의 연속을 의미합니다. Win32에서 어떻게 구현할 수 있습니까? 내가 ENABLE_LINE_INPUT와 콘솔 모드를 사용하는 경우Win32 콘솔 - 마지막 줄의 백 스페이스

다음, 사용자는 이전 행으로 돌아 가기 위하여 백 스페이스을 누를 수 없습니다; Windows는 그렇게하지 못하게합니다. 하지만 ENABLE_LINE_INPUT을 설정하지 않으면 수동으로 커서의 위치를 ​​변경해야하는데, 이는 (1) 사용자가 입력 스트림을 리디렉션했을 수 있으며 (2) 경쟁 조건이 발생하기 쉽고, 내가 할 수만 있다면 차라리 Windows에서 할 수 있습니다.

내 개줄을 가지고 먹는 방법은 없나요?


편집 : 이것은 CSRSS 포트 요청을 문서화 요구하는 경우

, 나는 여전히 관심이 있어요!

+0

내가 아는 사실은 아닙니다. –

+0

이것은'pInputControl' 매개 변수에서'nInitialChars'를 설정함으로써'ReadConsole'의 "Unicode"버전을 사용함으로써 가능합니다. – John

+0

@Amigable : 그래, 나는 두려워했다. ... @ 존 : 흠 ...'ENABLE_LINE_INPUT' 모드를 사용하거나 사용하지 않고'pInputControl'의 값을'ReadConsoleW'에 전달하려고 시도했지만, 어떤 차이가 있는지보십시오 ... : \ – Mehrdad

답변

0

명령 프롬프트가 전체 화면이 아닌 기본적으로 명령 프롬프트와 같이 창에서 실행되기를 원한다면 큰 텍스트 상자가있는 GUI 응용 프로그램을 만들 수 있습니다. 사용자는 텍스트 상자에 내용을 입력하면 입력 된 내용을 구문 분석하고 동일한 상자로 출력 할 수 있습니다 (효과적으로 Win32 콘솔을 에뮬레이션 함).

이 방법은 콘솔 작동 방식에 대해 설정하려는 규칙이 무엇이든지간에 완전히 당신에게 달려 있습니다.

나는이 말을 잘못하고 있을지도 모르겠지만, XP의 Win32 콘솔은 다음과 똑같이 작동한다고 믿습니다. 그리고 stdout의 출력을 수신합니다. 같은 일을 할 수없는 이유가 없어야합니다.

희망이있었습니다.

+0

제안에 감사드립니다.불행히도, 내 게시물에 대한 언급에서 언급했듯이 '내 프로그램의 핵심은 여러 가지면에서 시스템의 나머지 부분과 잘 통합되므로 표준 Windows 터미널을 사용하는 것이 었으며 텍스트 상자를 만들면 그게 "네이티브"콘솔이 아니기 때문에 (즉, 콘솔 앱으로 OS에서 인식되지 않을 것입니다.) 사용자와 OS를 속일 수있는 방법을 찾고 있지 않습니다. 그게 사실이 아닌 것을 생각하면. : – Mehrdad

+1

그러면 콘솔 기반 텍스트 편집기가 어떻게 작동하는지 살펴 보겠습니다. 명령을 받아 들여야 할 필요가 있기 때문에 명령을 버퍼링하고 줄을 추적해야 할 때 커서 위치를 직접 조작해야합니다 – bryanegr

+0

그래, 그 대답일지도 모른다고 두려웠다. 도움을 주셔서 감사합니다. – Mehrdad