如何截取应用程序的屏幕,无论前面有什么?
我可以用PIL这个库来截取桌面的屏幕截图,然后用pywin32来获取这个截图的矩形区域,裁剪出我想要的部分。不过,如果有其他窗口挡在我想截屏的应用程序前面,那就会遮住我想要的内容。有没有办法获取到应用程序当前显示的内容呢?即使其他窗口在它前面,它应该还是有这些数据的。
7 个回答
2
也许你可以把应用程序放在屏幕外面,然后截图,再把它放回原来的位置?
4
我在拍照之前,先把我想要聚焦的应用程序调到前面,这样就能做到同样的效果:
shell=win32com.client.Dispatch("Wscript.Shell")
success = shell.AppActivate(app_name) # Returns true if focus given successfully.
6
我在这里的回答中发布了可以运行的代码:关于如何打印不活动窗口的截图 + win32gui。这个代码使用了 PrintWindow
这个函数。
这是一种“正确”的方法,可以复制隐藏窗口的图像,但这并不意味着它总是有效。能否成功取决于程序是否正确处理了 WM_Print
这个消息。
如果你尝试使用 PrintWindow
但没有效果,那么你唯一的选择就是在进行 BitBlit
操作之前,把窗口调到最前面。