Come acquisire in modo affidabile win32 modifiche del buffer schermo della console?
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.
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.