代码之家  ›  专栏  ›  技术社区  ›  Ville Laurikari

如何可靠地捕获Win32控制台屏幕缓冲区更改?

  •  0
  • Ville Laurikari  · 技术社区  · 15 年前

    是否有任何方法可以可靠地捕获发生时对win32控制台缓冲区所做的所有更改?其思想是将文本模式应用程序的屏幕更新转换为telnet/ssh服务器的ansi转义序列。如果可能的话,我还需要捕捉光标的移动、颜色、窗口标题等。

    到目前为止,我看到的唯一一种方法是基本上频繁地对控制台缓冲区内容进行快照,并与以前的快照进行比较。如果有更改,那么找出更改的内容并生成ansi转义序列。

    这种方法是可行的,但是一个很好的将数据量最小化的差分算法是复杂的。有时屏幕缓冲区更新得如此之快,以至于有些更新根本不发送。这是一个显示阻止器;我需要100%可靠地捕获所有数据。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Koro    15 年前

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