HWND ActiveWindowHandle = GetForegroundWindow(); // Получили Handle активного окна
LPRECT ActiveWindowRect;
GetWindowRect(ActiveWindowHandle, ActiveWindowRect); // Получили координаты активного окна
HDC ActiveWindowHDC = GetWindowDC(ActiveWindowHandle); // Получили контекст активного окна
HBITMAP memBMP = CreateCompatibleBitmap (
ActiveWindowHDC,
ActiveWindowRect->right-ActiveWindowRect->left,
ActiveWindowRect->bottom-ActiveWindowRect->top); // Подготовили в памяти BMP для фотки
SelectObject(ActiveWindowHDC, memBMP);
PrintWindow(ActiveWindowHandle, ActiveWindowHDC, 0); // Сохранили активное окно в виде BMP в памяти.
Скриншоты, реализация на С++
Хочу попросить у вас помощи в написании программы. Я раньше никогда не имел дело с использованием функций Win32, поэтому работа продвигается тяжко.
Собственно говоря, нужно сделать скриншот активного окна и сохранить его в файл на диске. Полистав MSDN, начал я так:
Код:
Компилятор ругается при вызове GetWindowRect. Он говорит, что структура ActiveWindowRect использована без инициализации.
Далее посмотрел я на структуру бмп-файла. Она меня впечатлила. Сложно разобраться. Помогите, пожалуйста, сделать скриншот активного окна в файл средствами Win32. Если средства Win32 неоправдано сложны, возможно использование других библиотек - MFC, ATL.
http://www.google.ru/search?q=winapi+window+bitmap+capturing+c%2B%2B&ie=utf-8&oe=utf-8
http://www.codeproject.com/KB/cpp/Screen_Capture__Win32_.aspx?fid=456641&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2218397
http://codeguru.earthweb.com/cpp/g-m/bitmap/
поищи )
вот очень даже ничего, в последней ссылке найдено -
http://codeguru.earthweb.com/cpp/g-m/bitmap/article.php/c1741/
а вот еще лучше -
http://codeguru.earthweb.com/cpp/g-m/bitmap/capturing/article.php/c4919/
[offtop]
PS: и чем вам всем поисковики не приглянулись...
[/offtop]
http://www.codeproject.com/KB/cpp/Screen_Capture__Win32_.aspx?fid=456641&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2218397
http://codeguru.earthweb.com/cpp/g-m/bitmap/
поищи )
вот очень даже ничего, в последней ссылке найдено -
http://codeguru.earthweb.com/cpp/g-m/bitmap/article.php/c1741/
а вот еще лучше -
http://codeguru.earthweb.com/cpp/g-m/bitmap/capturing/article.php/c4919/
[offtop]
PS: и чем вам всем поисковики не приглянулись...
[/offtop]
Цитата:
Компилятор ругается при вызове GetWindowRect. Он говорит, что структура ActiveWindowRect использована без инициализации.
Ругается потому, что
Код:
LPRECT ActiveWindowRect;
это указатель на структуру.
Надо объявлять и использовать так:
Код:
RECT ActiveWindowRect;
GetWindowRect(ActiveWindowHandle, &ActiveWindowRect);
GetWindowRect(ActiveWindowHandle, &ActiveWindowRect);
Пример на сохранения bmp в файл есть в MSDN.
Всем спасибо, вроде разобрался. Будут проблемы - возможно ещё обращусь.
Решение найдено, забыл отписаться.