windows-10 - 计算机锁定后无法再获取屏幕截图
问题描述
我正在通过这种方式以编程方式生成屏幕截图(BlueStacks 5):
hDC = win32gui.GetWindowDC(self.child_hwnd)
myDC = win32ui.CreateDCFromHandle(hDC)
newDC = myDC.CreateCompatibleDC()
myBitMap = win32ui.CreateBitmap()
myBitMap.CreateCompatibleBitmap(myDC, self.rect_child.w, self.rect_child.h)
newDC.SelectObject(myBitMap)
# newDC.BitBlt((0, 0), (self.rect_child.w, self.rect_child.h), myDC, (0, 0), win32con.SRCCOPY)
# myBitMap.Paint(newDC)
ctypes.windll.user32.PrintWindow(self.child_hwnd, newDC.GetSafeHdc(), 2)
myBitMap.Paint(newDC)
然而,我注意到了一些奇怪的事情。当我锁定我的计算机 (Win-L) 时,截取的屏幕截图来自我锁定之前绘制的最后一个屏幕。
我注意到之前已经问过很多其他问题,并且似乎这些问题都可以通过使用该PrintWindow
功能来解决。我试过了,我用神奇的数字2
得到了一个截图,但它总是和第一个一样。所以我猜当计算机被锁定以节省我假设的资源时,BlueStacks 不会更新它的缓冲区?
我通过在截屏之间睡 2 秒来尝试这个,而且我总是得到相同的......所以,我的假设是正确的吗?我该怎么办?或者只是在永不休眠的虚拟机中运行应用程序?
我怎么去仍然得到截图?因为应用程序继续运行良好。
谢谢!
解决方案
推荐阅读
- javascript - 如何防止每次输入后触发选择事件?
- azure - 将邮件移动到垃圾文件夹时,客户端桌面版和 Web 版之间行为不同的 Outlook 加载项
- python - 熊猫:to.datetime() 问题
- c# - 使用 TimeOnly 结构进行日期时间计算
- laravel - Laravel Livewire 中的配置文件未更新
- bash - 退出 Raspberry Pi 上的 Shell 脚本(未检测到键盘输入)
- appkit - macOS:“SF Pro Text”在新计算机上不可用
- python-3.x - pdf格式输出分散在django中
- kotlin - 如何从 Kotlin 调用 Azure 函数
- python-3.x - 根据多个条件将一列拆分为几列并分组