首页 > 解决方案 > 计算机锁定后无法再获取屏幕截图

问题描述

我正在通过这种方式以编程方式生成屏幕截图(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 秒来尝试这个,而且我总是得到相同的......所以,我的假设是正确的吗?我该怎么办?或者只是在永不休眠的虚拟机中运行应用程序?

我怎么去仍然得到截图?因为应用程序继续运行良好。

谢谢!

标签: windows-10screenshotlockscreenwin32guibluestacks

解决方案


推荐阅读