ろがー
んー。まあ、古くは DDE とか、COM とか使って別ウインドウと連携てのはもうその時点でメッセージフックして片っ端から関連メッセージを記録したりしない限り辛いのではないかと。
たりくろすじゃないけど Excel のマクロでそれ相当のことができてしまうワケで、それこそ Excel で仕事するとき標準ドキュメントのテンプレートに細工しておけば裏でナニガシかのことができたりする。バックドアは EXE に限ったことじゃないし、Excel やら Word は某自治体が Windows 標準添付と思い違いをするくらいどこにでもあるしたいていの企業で使われて・・って話がズレたか。
閑話休題。
ウインドウのアクティブ化をフックして記録+マウス操作も記録+ショートカットキーも記録、で時系列に再生できると思うのよね。言ってみれば VNC がやってる「変更のあったトコだけ再描画」みたいな感じ。これはログビューアで実装すればカバーできる。
おいらが想像したのはこんな感じの仕様。
- Window のアクティブ化でアクティブウインドウをスナップショット
- ウインドウの矩形やら位置情報も取得
- MDI には対応できるはず。ウインドウのスタイルを取れば子か親かがわかる。親まで遡ればOKと思われ
- フローティングウインドウには対処できないかも。未確認。その場合はフルスクリーンでないとダメか?
- マウスクリックでアクティブウインドウをスナップショット
- メニュー操作の追跡
- 問題点は上記アクティブウインドウのスナップショットと同じ
- ショートカットキーの操作を記録
- メニュー操作が存在しない可能性もある。キーによっては(Altキーの単独押下など)スナップショットも必要か。
- プログラムの起動を記録
- できるかどうかは未確認だけどたぶんできる。
- 起動時のコマンドライン相当の情報(バイナリのパスと引数)が得られれば。
- 当然、コンピュータのイベントも記録
- もちろん時刻も記録
ログが壊れやすそうだな。
再生側では時系列にアクティブになった順にウインドウを再描画して、ってなことになると思われる。今気が付いたけど VNC のプロトコルを時系列に記録してもいいんじゃないだろうか。
でもまあ、見た目だけだからやっぱりウインドウ間の連携やらバックグラウンドのプロセス情報やら通信は取れないわけで。
んー。むじゅかちい。