我正在尝试截取在浏览器中运行的小程序的屏幕截图。该小程序使用 JOGL(用于 Java 的 OpenGL)来显示 3D 模型。(1) 屏幕截图总是黑色或白色。当前的解决方案使用通常的 GDI 调用。不运行 OpenGL 的小程序的屏幕截图很好。
可以在这里找到一些 JOGL 应用程序的示例https://jogl-demos.dev.java.net/
(2) 我想要实现的另一件事是在屏幕截图中也获得可滚动区域。
我在互联网上找到了这段代码,除了上面提到的 2 个问题外,它运行良好。
import win32gui as wg
import win32ui as wu
import win32con
def copyBitMap(hWnd, fname):
wg.SetForegroundWindow(hWnd)
cWnd = wu.CreateWindowFromHandle(hWnd)
rect = cWnd.GetClientRect()
(x,y) = (rect[2] - rect[0], rect[3] - rect[1])
hsrccDc = wg.GetDC(hWnd)
hdestcDc = wg.CreateCompatibleDC(hsrccDc)
hdestcBm = wg.CreateCompatibleBitmap(hsrccDc, x, y)
wg.SelectObject(hdestcDc, hdestcBm.handle)
wg.BitBlt(hdestcDc, 0, 0, x, y, hsrccDc, rect[0], rect[1], win32con.SRCCOPY)
destcDc = wu.CreateDCFromHandle(hdestcDc)
bmp = wu.CreateBitmapFromHandle(hdestcBm.handle)
bmp.SaveBitmapFile(destcDc, fname)