Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/111: Рейтинг темы: голосов - 111, средняя оценка - 4.86
8 / 8 / 1
Регистрация: 11.08.2012
Сообщений: 112

Сделать скриншот экрана / копировать экранную область видеопамяти

20.01.2013, 18:32. Показов 22045. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Для работы программы необходимо получить копию(скриншот) экрана, с запущенным directX приложением (собственно скриншот самого приложения и надо получить). Проблема в том, что трогать само directX приложение (получить хендл и прочее) нельзя.
Собственно вопрос - с помощью чего можно реализовать эту функцию, при этом получить максимальное быстродействие (получать копию экрана необходимо не реже 4-х раз в секунду, при этом необходимо его успевать обрабатывать)? Экзотические варианты типа написания собственного драйвера не подойдут)))
Заранее спасибо.

PS Будет ли программа делать скриншот всего экрана, или только приложения - не принципиально, главное скорость + нормальный скрин directX пиложения.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.01.2013, 18:32
Ответы с готовыми решениями:

Как сделать скриншот, получая данные непосредственно из видеопамяти.
Я так предполагаю, нужно использовать asm вставки. Искал в сети исходники, но так и не нашел.

как сделать экранную форму большую, чем размер экрана?
Люди подскажите - кто знает - как сделать экранную форму в Дельфи - больше размера самого размера экрана...????

Как сделать скриншот экрана (просто скрин полного экрана) и сохранить изображение в определённую папку?
Как сделать скриншот экрана (просто скрин полного экрана) и сохранить изображение в определённую папку? Программа без кнопок просто...

24
8 / 8 / 1
Регистрация: 11.08.2012
Сообщений: 112
02.08.2013, 17:17  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от time123 Посмотреть сообщение
ну то есть необходимо узнать на сколько байтов pBits будет ссылаться
Я же в предыдущем посте написал полностью рабочий код:
Цитата Сообщение от Ermak_nk Посмотреть сообщение
C
1
2
d3dpp.BackBufferHeight = d3ddm.Height; 
d3dpp.BackBufferWidth = d3ddm.Width;
умножаете Height*Width*число байт/точку... непонятно че тут сложного....
получить ссылку на область памяти тоже описано как, если не нравится DWORD напишите чтото типа
C
1
2
char *imageData
imageData = (char*)lockedRect.pBits;
а как работать с bmp это отдельный разговор, либо читать описание по D3DXSaveSurfaceToFile, либо искать сторонние либы, либо писать самому...
простой способ получения скриншота я написал в 9-м посте, по поводу вашего кода ничего не могу сказать, мне эти функции не знакомы)
0
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 53
07.08.2013, 11:31
можете кинуть линк как поставить директ икс sdk? а то не видит у меня визуал студия экспресс 2010 #include <d3dx9tex.h>
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
08.08.2013, 19:46
Цитата Сообщение от time123 Посмотреть сообщение
можете кинуть линк как поставить директ икс sdk?
http://www.microsoft.com/en-us... px?id=6812
0
8 / 8 / 1
Регистрация: 11.08.2012
Сообщений: 112
27.08.2013, 12:43  [ТС]
Чтобы не возникало больше подобных вопросов, скажу как делал. Я использовал библиотеки DX9.0, гугль выдает их по первой же ссылке. Далее файлы .lib (Library) ложу в папку \Microsoft Visual Studio 10.0\VC\lib , файлы .h (Include) - в \Microsoft Visual Studio 10.0\VC\include . И собственно все, более никаких телодвижений не надо
0
ps
1 / 1 / 0
Регистрация: 16.05.2014
Сообщений: 31
22.12.2015, 11:04
Вопрос по дальнейшему развитию тематики! Получается делать скриншоты по определенным событиям происходящим в системе, только вот хотелось бы укладывать их в видео используя API какого нибудь кодека (xvid советовалит), но пока безрезультата! Может кто подсказать по данной проблеме?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.12.2015, 11:04

Сделать скриншот экрана
Подскажите, пожалуйста, как реализовать на СИ какие библиотеки использовать?

Сделать скриншот части экрана
Для работы программа делает скриншоты несколько раз в секунду, и чтобы оптимизировать всё это дело, я решил делать снимки только нужной...

Как сделать скриншот экрана?
1. Программа через равные промежутки времени (2...5 сек) должна делать скриншот и сохранять его в любом формате, файл постоянно...

Не могу сделать скриншот экрана
не могу сделать скриншот экрана. помогите

Как сделать скриншот экрана?
Как сделать скриншот экрана (допустим, 200 на 300px, по координатам x: 150, y: 20) и поместить его в image?


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru