2009-08-14 11 views
0

Win32コンソールバッファに加えられたすべての変更を確実に取得する方法はありますか?この考え方は、テキストモードのアプリケーションのスクリーン更新を、telnet/sshサーバ用のANSIエスケープシーケンスに変換することです。私は、カーソルの動き、色、ウィンドウのタイトルなどをキャプチャする必要があります。可能であれば、マウスもクリックします。win32コンソール画面のバッファの変更を確実にキャプチャするには?

これまでに私が見た唯一のテクニックは、基本的にはコンソールバッファの内容のスナップショットを頻繁に取って、以前のスナップショットと比較することです。変更がある場合は、変更された内容を把握し、ANSIエスケープシーケンスを生成します。

このような仕組みだが、回線の下に送られるデータの量を最小限に抑えるための優れたdiffingアルゴリズムは複雑です。画面バッファーがすばやく更新され、一部の更新がまったく送信されないことがあります。これはショーストッパーです。 100%確実に捕捉されたすべてのデータが必要です。

答えて

1

悲しいことに、これは確実にきれいに行うことはできません。標準ハンドルをリダイレクトすると、高レベルのコンソールI/Oしか捕捉されません。私がすべてをキャッチすることを知っている唯一の方法は、悲しいことに、ターゲットプロセス(およびその子供たち)からコンソールAPIをフックすることです。

関連する問題