Как получить снимок экрана в строковый буфер на C++?

248
12 февраля 2017, 11:35

Задача - удалённый мониторинг рабочего стола сотрудника. Для передачи через сокет нужен строковый буфер с jpeg-снимком всего того, что происходит на рабочем столе пользователя (можно без курсора мыши). Есть функция конвертации в jpeg следующего вида:

bool compress_image_to_jpeg_file_in_memory(void *TargetBuffer,
                                           int &TargetBufSize,
                                           int img_width,
                                           int img_height,
                                           int number_channels,
                                           const unsigned char *SourceData);

В SourceData можно передать строковый буфер с RGB палитрой, даже без BMP шапки. Вот этот буфер RGB мне и нужно получить средствами GDI+, чтобы потом сделать из него jpeg и отправить по запросу. Функции GDI работают со всякими структурами HBITMAP, BITMAP... но в них нет строкового буфера полученных данных, как например в структуре LPVIDEOHDR (из vfw), и как достать оттуда буфер с палитрой RGB я не знаю, так как с GDI не работал.

Подскажите пожалуйста как средствами GDI+ получить буфер с палитрой RGB (unsigned char * или string)?

READ ALSO
Почему не могу добавить элемент из вектора в вектор?

Почему не могу добавить элемент из вектора в вектор?

Во-первых, insert для вектора требует два параметра - куда вставлять, и что вставлятьВы передаете только что

305
Запретить подключение DLL к программе

Запретить подключение DLL к программе

Как можно реализовать запрет на подключение DLL к выполняемому процессу на программном уровне? Программа написана на C++Среда разработки Visual...

224
Создание больших файлов через WinAPI.

Создание больших файлов через WinAPI.

ЗдравствуйтеРаботаю в C++ Builder 6

267
Самодельный скроллинг кастомного view

Самодельный скроллинг кастомного view

ЗдравствуйтеИмеется кастомный view в котором помимо скролла тачпадом нужно обработать и скролл колесиком мышки

230