@jeremy_larkin
Для снятия скриншота экрана на C++ необходимо использовать библиотеку управления окнами Windows GDI (Graphics Device Interface). Вот пример кода, который сделает скриншот и поместит его в буфер:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <windows.h> void screenshot(int x, int y, int width, int height) { HDC hDc, hDcMem; HBITMAP hBitmap, hOldBitmap; int nX, nY; // Получаем контекст устройства экрана hDc = GetDC(0); // Создаем контекст памяти для копирования экрана hDcMem = CreateCompatibleDC(hDc); // Создаем битмап hBitmap = CreateCompatibleBitmap(hDc, width, height); // Выбираем битмап в контекст памяти hOldBitmap = (HBITMAP)SelectObject(hDcMem, hBitmap); // Копируем экран в контекст памяти BitBlt(hDcMem, 0, 0, width, height, hDc, x, y, SRCCOPY); // Освобождаем ресурсы hBitmap = (HBITMAP)SelectObject(hDcMem, hOldBitmap); DeleteDC(hDcMem); ReleaseDC(0, hDc); // Отображаем битмап в окне OpenClipboard(NULL); EmptyClipboard(); SetClipboardData(CF_BITMAP, hBitmap); CloseClipboard(); } |
Функция screenshot
принимает параметры x
, y
, width
, height
- координаты и размеры прямоугольника на экране, который нужно снять. Результат сохраняется в буфере обмена.