如何可靠地捕获win32控制台屏幕缓冲区的变化?

时间:2009-08-14 17:35:25

标签: winapi console capture

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

到目前为止,我见过的唯一技术是基本上采用控制台缓冲区内容的频繁快照,并与之前的快照进行比较。如果有变化,那么找出已经改变的内容并生成ANSI转义序列。

这种工作,但是一种很好的差异算法可以最大限度地减少发送到线路上的数据量。有时屏幕缓冲区更新得如此之快,以至于根本不会发送某些更新。这是一个展示塞;我需要100%可靠地捕获所有数据。

1 个答案:

答案 0 :(得分:1)

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