在c++ (Win32)中快速获取Windows应用程序的屏幕截图
Fast way to get screenshot of Windows application in C++ (Win32)?
当我的应用程序需要获取其他Windows应用程序的截图时,我遇到了一个问题。
我正在使用win32api ' printwwindow '中的函数,但这不能很好地工作。它是缓慢的,并且在其他应用程序的窗口中的一些组件显示为黑色矩形。
有一个应用程序(mac - os风格的任务切换器)叫做DExpose2由Devrexster。它可以非常快地获取其他应用程序的截图,非常快,甚至可以连续获取这些截图。我猜它是使用Direct3D来获取应用程序的截图,而不是使用GDI,因为我正在使用。是否可以使用Direct3D来达到这个目的?如果可能的话,哪条路是最近的?
Vista+的答案在另一个答案中:窥探DirectX的缓冲区
DExpose2可能没有"得到"屏幕截图。也就是说,它不会将它们从显卡传输到RAM。这是一个缓慢的操作,并且必须再一次缓慢地复制到显卡上。我希望它只在显卡端应用一些缩放和移动变换,没有像素或纹理穿过PCI-e总线。
您可以使用bitblt来获取截图。下面是为整个桌面获取它的示例:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd183402 (v = vs.85) . aspx
您可能需要调整X, Y和大小参数,以便您得到一个子集,对应于您所关心的窗口。
相关文章:
- 从预处理器获取 Windows 版本(C++ Win32)
- 从存储为 Windows 资源 (c++) 的 png 中获取 png 文件数据
- 如何在Windows内核中获取文件大小
- 我应该如何获取配置文件的绝对路径与 Windows .exe一起发布?
- 互斥,Windows 10,c ++,在一个线程上获取,在另一个线程上发布
- 如何在 Windows 上获取带有 c++ 且没有 <dirent.h> 的特定扩展名的所有文件的列表
- 如何在Windows Media Foundation中获取相机外部函数?
- 当PSO细粒度策略对使用AdsGetObject MSDN API的Windows操作系统生效时,如何获取用户密码到期日
- 使用内置的Windows方法获取文件夹的内容
- 如何在Windows中获取和设置系统音量
- 在Windows上获取OpenGL点大小(以像素为单位)?
- 无法在 WinRT 中获取异步操作结果 (Windows::Foundation::IAsyncOperating 接口
- 从C++ Windows 服务中获取当前登录的用户名
- 如何在 Windows 中获取 USB 设备的友好名称?
- 在C Windows程序中获取A/D转换器示例程序
- 如何使用<windows.h获取当前目录名称> C++
- Windows:获取.text部分的开始和结束
- 从 Windows 获取 c++ 中的系统环境
- c++ Windows 7获取已安装驱动程序的符号名
- Windows C++:获取驱动程序设备ID