Come acquisire in modo affidabile win32 modifiche del buffer schermo della console?

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

  •  16-09-2019
  •  | 
  •  

Domanda

C'è un modo per catturare in modo affidabile tutte le modifiche apportate al buffer console win32, come accadono? L'idea è quella di convertire gli aggiornamenti dello schermo di una modalità di applicazione di testo per sequenze di escape ANSI, per un server telnet / ssh. Ho bisogno di catturare i movimenti del cursore, i colori, il titolo della finestra, clic del mouse, ecc, anche, se possibile.

L'unica tecnica che ho visto usare per questo finora è quello di prendere praticamente istantanee frequenti di contenuto del buffer della console, e confrontare a uno snapshot precedente. Se ci sono cambiamenti, quindi capire cosa è cambiato e generare sequenze di escape ANSI.

Questo tipo di opere, ma un buon algoritmo diffing per ridurre al minimo quantità di dati inviati lungo la linea sarebbe complessa. A volte il buffer dello schermo viene aggiornato così rapidamente che alcuni aggiornamenti non vengono inviati a tutti. Questo è un tappo di spettacolo; Ho bisogno di tutti i dati catturati al 100% affidabile.

È stato utile?

Soluzione

Purtroppo, questo non può essere fatto in modo affidabile in modo pulito. Reindirizzamento maniglie standard saranno solo prendere di alto livello console di I / O. L'unico modo sono a conoscenza di catturare tutto è agganciando le API della console dal processo di destinazione (e dei suoi figli), purtroppo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top