Я следующий код, чтобы делать скриншоты окна:скриншоты крытых/свернутых окон
HDC WinDC;
HDC CopyDC;
HBITMAP hBitmap;
RECT rt;
GetClientRect (hwnd, &rt);
WinDC = GetDC (hwnd);
CopyDC = CreateCompatibleDC (WinDC);
hBitmap = CreateCompatibleBitmap (WinDC,
rt.right - rt.left, //width
rt.bottom - rt.top);//height
SelectObject (CopyDC, hBitmap);
//Copy the window DC to the compatible DC
BitBlt (CopyDC, //destination
0,0,
rt.right - rt.left, //width
rt.bottom - rt.top, //height
WinDC, //source
0, 0,
SRCCOPY);
ReleaseDC(hwnd, WinDC);
ReleaseDC(hwnd, CopyDC);
Это чей-код, немного изменен, так как я не очень знаком с DC и как окна черпает материал для экрана.
Когда у меня есть одно окно, слегка прикрывающее другое, окно покрытия появляется на скриншотах покрытого, что является своего рода неудобным. Кроме того, когда окно минимизировано, этот код не вызывает ничего интересного.
Есть ли способ обойти это? Я бы предположил, что сделать скриншоты с минимальным приложением будет довольно сложно, но я надеюсь, что получение скриншотов из закрытых окон возможно. Возможно, существует другой способ реализации этого, чтобы обойти эти проблемы?
WM_PRINT вещь может быть удобной и не должна быть слишком сложной. Благодарю. – Oliver
Справедливости ради, вы вряд ли читаете пиксели непосредственно с видеоадаптера - возможно, из внутреннего буфера, хранящегося в Windows. Я мог ошибаться, но я был бы удивлен, если бы это было сделано не так. –