0

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

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

この種の機能は機能しますが、送信されるデータの量を最小限に抑えるための優れた差分アルゴリズムは複雑になります。画面バッファが非常に速く更新され、一部の更新がまったく送信されない場合があります。これはショーストッパーです。100%確実にキャプチャされたすべてのデータが必要です。

4

1 に答える 1

1

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

于 2009-08-21T23:33:08.090 に答える