Ниже мой код:
int main()
{
HDESK desktop;
desktop = GetThreadDesktop(GetCurrentThreadId());
EnumDesktopWindows(desktop, EnumWindowsProc, 0);
return 0;
}
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
RECT rc;
char buff[1024];
GetWindowRect(hwnd, &rc);
HDC hdcScreen = GetDC(hwnd);
HDC hdcCompatible = CreateCompatibleDC(hdcScreen);
HBITMAP hbmScreen = CreateCompatibleBitmap(hdcScreen, rc.right - rc.left, rc.bottom - rc.top);
SelectObject(hdcCompatible, hbmScreen);
PrintWindow(hwnd, hdcCompatible, NULL);
wsprintfA(buff, "T:\\%dx%d - %dx%d.bmp", rc.left, rc.right, rc.top, rc.bottom);
CreateBMPFile(buff, hbmScreen, hdcCompatible);
return true;
}
Все отлично работает. Однако это также сохраняет изображения мусора с черным внутри. Как я могу решить это? У меня только 1 открытое окно. Сохраняет это до bmp
. Но много мусорных изображений с черным внутри.