0

有什么方法可以可靠地捕获对 win32 控制台缓冲区所做的所有更改,因为它们发生了?这个想法是将文本模式应用程序的屏幕更新转换为 ANSI 转义序列,用于 telnet/ssh 服务器。我需要捕捉光标移动、颜色、窗口标题等。如果可能的话,也需要捕捉鼠标点击。

到目前为止,我看到的唯一用于此的技术基本上是频繁地拍摄控制台缓冲区内容的快照,并与之前的快照进行比较。如果有变化,则找出发生了什么变化并生成 ANSI 转义序列。

这种方法很有效,但是一个好的差异算法来最小化发送到线上的数据量会很复杂。有时屏幕缓冲区更新得太快,以至于根本没有发送一些更新。这是一个表演停止者;我需要 100% 可靠地捕获所有数据。

4

1 回答 1

1

可悲的是,这不能可靠地干净地完成。重定向标准句柄只会捕获高级控制台 I/O。遗憾的是,我知道捕获所有内容的唯一方法是从目标进程(及其子进程)中挂钩控制台 API。

于 2009-08-21T23:33:08.090 回答