在C++(Win32)中快速获取Windows应用程序的屏幕截图的方法是什么?

5
我在应用程序需要获取其他Windows应用程序的截图时遇到了问题。
我使用win32api中的'PrintWindow'函数,但它效率很低,并且其他应用程序窗口内的某些组件显示为黑色矩形。
有一个名为DExpose2的应用程序(Mac-OS风格任务切换器)由Devrexster开发。 它可以非常快速地获取其他应用程序的截图,甚至可以连续获取这些截图。
我猜它是使用Direct3D来获取应用程序的截图,而不是像我使用的GDI。 是否可能使用Direct3D来实现此目的? 如果可能,哪种方法最干净?
2个回答

4
Vista+的解决方案在另一个答案中:监视DirectX缓冲区
DExpose2可能无法“获得”屏幕截图。也就是说,它不会将它们从显卡传输到内存中。这是一个缓慢的操作,必须跟随另一个缓慢的复制回显卡的操作。我预计它只会在显卡端应用一些缩放和移动变换,而没有像素或纹素跨越PCI-e总线。

2

可能会起作用。然而,从Windows Vista开始,似乎我们在WinAPI中使用Direct3D或其他新功能。 - jondinham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接