Как надежно фиксировать изменения буфера экрана консоли win32?

StackOverflow https://stackoverflow.com/questions/1279139

  •  16-09-2019
  •  | 
  •  

Вопрос

Есть ли какой-либо способ надежно фиксировать все изменения, внесенные в буфер консоли win32, по мере их возникновения?Идея состоит в том, чтобы преобразовать обновления экрана приложения текстового режима в escape-последовательности ANSI для сервера telnet / ssh.Мне нужно фиксировать движения курсора, цвета, заголовок окна и т.д.Тоже щелкает мышью, если это возможно.

Единственный метод, который я видел, используемый для этого до сих пор, - это в основном делать частые снимки содержимого консольного буфера и сравнивать с предыдущим снимком.Если есть изменения, то выясните, что изменилось, и сгенерируйте управляющие последовательности ANSI.

Такого рода работы, но хороший алгоритм дифференцирования для минимизации объема данных, отправляемых по линии, был бы сложным.Иногда экранный буфер обновляется так быстро, что некоторые обновления вообще не отправляются.Это шоу-стопор;Мне нужно, чтобы все данные были собраны на 100% надежно.

Это было полезно?

Решение

К сожалению, это не может быть сделано надежно и чисто.Перенаправление стандартных дескрипторов будет перехватывать только высокоуровневый консольный ввод-вывод.Единственный известный мне способ перехватить все - это, к сожалению, подключить консольные API-интерфейсы к целевому процессу (и его дочерним процессам).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top