Я пытаюсь сделать снимок экрана апплета, работающего внутри
браузер. Апплет использует JOGL (OpenGL для Java) для отображения 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)