2009-08-14 6 views
0

win32 콘솔 버퍼에 발생한 모든 변경 사항을 확실하게 캡처하는 방법이 있습니까? 이 아이디어는 telnet/ssh 서버에서 텍스트 모드 응용 프로그램의 화면 업데이트를 ANSI 이스케이프 시퀀스로 변환하는 것입니다. 가능한 경우 마우스 이동, 색상, 창 제목 등을 캡처해야합니다.안정적으로 Win32 콘솔 화면 버퍼 변경 사항을 캡처하는 방법은 무엇입니까?

지금까지 본 적이있는 유일한 기술은 기본적으로 콘솔 버퍼 내용의 스냅 샷을 자주 가져 와서 이전 스냅 샷과 비교하는 것입니다. 변경 사항이있는 경우 변경된 사항을 파악하고 ANSI 이스케이프 시퀀스를 생성합니다.

이러한 종류의 작동은 좋지만 라인 아래로 보내지는 데이터의 양을 최소화하는 좋은 diffing 알고리즘은 복잡 할 것입니다. 화면 버퍼가 너무 빨리 업데이트되어 일부 업데이트가 전혀 전송되지 않는 경우가 있습니다. 이것은 쇼 스토퍼입니다. 모든 데이터를 100 % 확실하게 캡처해야합니다.

답변

1

슬프게도, 이것은 안정적으로 깨끗하게 수행 될 수 없습니다. 표준 핸들을 리디렉션하면 고급 콘솔 I/O 만 인식합니다. 모든 것을 잡는 방법을 알고있는 유일한 방법은 슬프게도 목표 프로세스 (및 그 자식)로부터 콘솔 API를 연결하는 것입니다.

관련 문제