【发布时间】:2018-08-19 10:41:45
【问题描述】:
我的目标是在笔记本电脑屏幕关闭时从应用程序中截取屏幕截图,但屏幕截图始终与关闭屏幕之前相同。一旦屏幕关闭,它就不会重新绘制自己,并保持冻结状态。
我正在使用 Python 中的 printwindow 获取屏幕截图(使用此处描述的方法:Python Screenshot of inactive window PrintWindow + win32gui
只要我的笔记本电脑屏幕打开,此方法就可以很好地工作,但如果我关闭它,它只会返回屏幕关闭前的最后一张图像。我试过使用 win32gui.RedrawWindow,希望这会强制重绘,但我还没有让它工作,甚至尝试了所有不同的标志。我也尝试过通过 pyautogui 获取屏幕截图,但这也有同样的问题。有没有办法在笔记本电脑屏幕关闭时重绘应用程序?
【问题讨论】:
-
您找到解决方案了吗?我也有同样的问题...
-
很遗憾我没有。
-
以上示例截取了 Calculator 的屏幕截图,它是 Windows 10 中的 UWP 应用程序。
PrintWindow无法在屏幕打开或关闭时工作。另一个代码在 "Steam" 上工作,我认为它也不是本机 Win32 应用程序,因此会遇到同样的问题。该代码似乎也有资源泄漏,它只是在一段时间后停止工作。我不确定问题是否一定是屏幕关闭。在屏幕关闭时按键盘上的“Print Screen”键,然后使用 “Paint” 查看剪贴板内容,看看它是否打印了屏幕。和睡眠模式不一样? -
我认为这与资源泄漏无关,因为它在关闭屏幕后立即发生。您可以使用
SendMessage(win32con.HWND_BROADCAST, win32con.WM_SYSCOMMAND, SC_MONITORPOWER, 2)轻松重现它,其中SC_MONITORPOWER = 0xF170 -
我无法在我的桌面上重现它。也许笔记本电脑或某些显卡有什么特别之处。
标签: python winapi window screen screenshot