int width = GetSystemMetrics(SM_CXSCREEN);
int height = GetSystemMetrics(SM_CYSCREEN);
HDC dc = ::GetDC(NULL);
HDC hMemDC;
HBITMAP hBmpOld;
HBITMAP hBmp;
hMemDC = ::CreateCompatibleDC(dc);
hBmp = ::CreateCompatibleBitmap(dc, width, height);
hBmpOld = (HBITMAP)SelectObject(hMemDC, hBmp);
BitBlt(hMemDC, 0, 0, width, height, dc, 0, 0, SRCCOPY);
SelectObject(hMemDC, hBmpOld);
DeleteObject(hBmpOld);
Програмный PrintScreen
Как сделать програмно PrintScreen и записать в файл резаультат?
Код:
Теперь в hBmp лежит скриншет, а как уж в файл записать - вам решать. От формата хранения зависит.
Сенк!
Насколько я понял в hBmp лежил хендел на скриншот. А как получить массив пикселей скриншота?
При таком способе это изображение в файле в формате bmp будет весить 3 метра. Как можно уменьшить этот размер ( программно), например сохранить в формате jpeg или еще как нить, кто знает?
Насколько я понял в hBmp лежил хендел на скриншот. А как получить массив пикселей скриншота?[/QUOTE]
GetDIBits например.
[QUOTE=GRIENDERS]При таком способе это изображение в файле в формате bmp будет весить 3 метра. Как можно уменьшить этот размер ( программно), например сохранить в формате jpeg или еще как нить, кто знает?[/QUOTE]
Ну можно например взять Image из GDI+ и загрузить в него полученный скриншот. У него есть возможность сохранять изображения в различные форматы (метод Save).
Можно восспользоваться этой библиотекой специально для работы с Jpeg: http://www.ijg.org