Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
431 / 385 / 200
Регистрация: 12.08.2011
Сообщений: 1,610

Получить скриншот посредством GetDC

22.06.2013, 22:44. Показов 3609. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно прочитать содержимое экрана. Я выяснил, что для этого нужно использовать функцию GetDC(NULL). А потом не забыть сделать ReleaseDC(). Вот чего я никак не могу уразуметь, а что мы получим в результате этой функции? Указатель на буфер видеокарты? Мне нужно просто читать пиксели, и проверять, тот у них цвет или нет. Сохранять буфер в формате BMP не надо. Если уж сохранять, то двумерный массив типа Integer, каждый элемент которого - цвет соответствующего пикселя. Или как-то так. Не принципиально. Главное, чтобы потом это обрабатывать удобно было.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.06.2013, 22:44
Ответы с готовыми решениями:

Сохранить скриншот в файл или получить массив байт
В идеале нужно получить массив байт изображения, но можно и просто сохранить скриншот в файл. Скриншот делаю таким образом // get the...

Нужно получить скриншот сайта
В Excel создана функция для получения заголовка с сайта WebPageTitle = IE.Document.Title Нужно cделать получение скрина самого сайта с...

Как получить из видео скриншот?
Всем привет! Возникла проблема получения картинок из большого количество видео. Как получить картинку содержимого имея ссылку на видео? ...

5
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
23.06.2013, 01:52
Цитата Сообщение от Vtulhu Посмотреть сообщение
Вот чего я никак не могу уразуметь, а что мы получим в результате этой функции? Указатель на буфер видеокарты?
Не думай об этом, делай что тебе нужно и всё.
Цитата Сообщение от Vtulhu Посмотреть сообщение
Если уж сохранять, то двумерный массив типа Integer
А почему не трех- или даже не четырех-?
Цитата Сообщение от Microsoft® Win32® Programmer's Reference
The COLORREF value is a 32-bit value used to specify an RGB color.
When specifying an explicit RGB color, the COLORREF value has the following hexadecimal form: 0x00bbggrr
Для такой задачи (да и вообще считаю любой) можно и одномерным обойтись.
0
431 / 385 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
23.06.2013, 11:15  [ТС]
Цитата Сообщение от Digit@ll Посмотреть сообщение
Не думай об этом, делай что тебе нужно и всё.
Это замечательный совет, а то я частенько загружаюсь лишней инфой. Но проблема в том, что я вообще не понимаю, что дальше делать с полученным значением. Вы бы хоть пример кода привели. Как заполнить массив, зная результат функции GetDC? Или можно прямо оттуда (сам толком не понимаю, откуда "оттуда") читать побайтово? Не нагуглил.

А почему не трех- или даже не четырех-?
Гипотетически, если важно хранить цветовые каналы (RGB) как отдельные числа, может понадобиться и трёхмерный.

Для такой задачи (да и вообще считаю любой) можно и одномерным обойтись.
Это очевидно, в конце-концов память одномерна. Но мне будет проще писать циклы, если массив будет двумерным.
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
25.06.2013, 22:53
Цитата Сообщение от Vtulhu Посмотреть сообщение
Вы бы хоть пример кода привели
Там приводить нечего, дальше тебе понадобится ф-ция GetPixel. И вообще, что уже есть у тебя?
0
Заблокирован
26.06.2013, 00:55
Теория WinAPI - GetDC возвращает Device Context Handle, GetDC(0) возвращает экрана(с ограничениями). Далее с ним можно работать РАЗНЫМИ методами уже копируя или меняя содержимое, начиная от BitBlt на свой VCL/WinForms/etc объект и заканчивая чистым WinAPI. Долгий способ с чистым WinAPI:

http://cboard.cprogramming.com... t-gdi.html
0
431 / 385 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
26.06.2013, 10:34  [ТС]
Оказалось, что у программы, скриншот которой я хотел делать (Virtualbox), есть для этого API. Я готов заплатить за создание враппера для VB API-функции takeScreenShot - https://www.cyberforum.ru/orde... 11932.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.06.2013, 10:34
Помогаю со студенческими работами здесь

Получить скриншот экрана из игры
Добрый день. Подскажите, пожалуйста, как можно получить скриншот экрана, если запущена игра. Screen.GetBounds и дальнейшие танцы дают...

GetDC и BeginPaint
Добрый день. При написании программы на winapi по-умолчанию всегда пользовался BeginPaint и проблем не знал, но преподаватель озадачил:...

Не могу получить скриншот с компонента Chromium
Здравствуйте, установил компонент Chromium, все прекрасно работает, но не могу получить скрин, пробую через CopyRect выдает просто черный...

Как получить скриншот стороннего ресурса?
привет.Как можно осуществить задумку?На выходе должно быть изображение. Добавлено через 5 часов 56 минут нашел такое,но у меня не...

Как получить скриншот сторонней программы?
Вобщем дело такое. Есть программа, которая работает сама по себе (назовём её 1 программой). И есть программа 2, которую пишу я и которая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru