Каков наилучший (самый простой) способ сделать снимок экрана работающего приложения с С++ под Windows?
Каков наилучший способ сделать скриншоты окна с С++ в Windows?
Ответ 1
Вы должны получить контекст окна устройства (GetWindowDC()
) и скопировать изображение (BitBlt()
). В зависимости от того, что еще вы знаете о приложении, вы будете использовать разные методы, чтобы найти, какой дескриптор окна перейти в GetWindowDC()
.
Ответ 2
В keybd_event в документации к функции указано, что вы можете использовать его, чтобы сделать снимок экрана и сохранить его в буфер обмена. Например:
keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_SILENT, 0);
В моей версии (с помощью справки Visual Studio 2005, установленной на моем компьютере) в ней указано, что вы можете сделать снимок экрана всего рабочего стола, установив второй параметр в 0 или снимок экрана только текущего приложения, установив его на 1.
Извлечение его из буфера обмена остается в качестве упражнения для читателя.
Однако я бы тщательно подумал, прежде чем делать это, так как он будет показывать любые данные изображения в буфере обмена.
Ответ 3
Вот пример code
Вы можете сделать CaptureAnImage(GetDesktopWindow());
, чтобы сделать захват экрана.