|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|
Как создать скриншот части экрана?01.05.2013, 22:34. Показов 19972. Ответов 40
Метки нет (Все метки)
Можно весь экран заскриншотить потому, что это частный случай части. Но дело не в этом.
Скриншот ведь предполагает какой-то файл иображения, да ведь? *.bmp там или *.jpg, к примеру. Дело в том, что все примеры, на которые я натыкался в инете глукбокомысленно заканчивались вызовом BitBlt, но этот вызов не создаст файла изображения, вот в чём дело! Ну вот ссыли к примеру: http://vsokovikov.narod.ru/New... _image.htm Как сделать скриншот экрана? Скриншот экрана После чего все замолкают- типа дальше догадывайтесь сами. Нет, сохранение рисунка в каком-то внутреннем формате- это дело хорошее, но пока я не увижу, как это сохранение можно в файл-изображение конвертировать, это для меня пустые звуки. Спасибо, кто откликнется,
0
|
|
| 01.05.2013, 22:34 | |
|
Ответы с готовыми решениями:
40
Как скопировать в буфер обмена скриншот экрана?
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||||||||||||||
| 08.05.2013, 10:21 [ТС] | ||||||||||||||||
|
Ниже предлагаю усовершенствованные варианты кропания снимков. Что очень важно- добавлены вот эти 4 вызова (в коде FreeMan108 их нет):
снимок рабочего стола
снимок части окна
1
|
||||||||||||||||
|
Ушел с форума
|
|||||||||
| 08.05.2013, 13:36 | |||||||||
Сообщение было отмечено как решение
Решение
Сейчас многие пользователи подключают к компьютеру (даже к ноутбуку) второй монитор. Например, на одном ты работаешь, а на втором твои домочадцы смотрят мультики. При таком раскладе в снимок экрана попадет только содержимое основного (который №1) монитора.
А вообще, очистку ресурсов лучше в RAII оборачивать...
3
|
|||||||||
|
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
|
||
| 08.05.2013, 13:40 | ||
|
0
|
||
|
Ушел с форума
|
|
| 08.05.2013, 13:44 | |
|
CAPTUREBLT определен в файле WinGdi.h из Windows SDK и работает на всех системах,
начиная от Windows XP.
0
|
|
|
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
|
|||
| 08.05.2013, 13:50 | |||
|
Добавлено через 59 секунд
0
|
|||
|
Ушел с форума
|
|||||||
| 08.05.2013, 13:58 | |||||||
|
WinGdi.h
Layered-окна и функция BitBlt появились тоже в Windows 2000. Добавлено через 1 минуту
0
|
|||||||
|
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
|
|
| 08.05.2013, 14:02 | |
|
0
|
|
|
Ушел с форума
|
|
| 08.05.2013, 14:06 | |
|
CAPTUREBLT - это документированный флаг функции BitBlt, который поддерживается на
Windows 2000 и всех последующих системах, как и layered-окна. Если бы это было не так, на соответствующих страницах MSDN была бы предупреждающая врезка.
0
|
|
|
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
|
|
| 08.05.2013, 14:19 | |
|
У меня изображение выходит полным, включая все окна (в том числе и прозрачные) и без этого флажка.
С чем это может быть связано?
0
|
|
|
Ушел с форума
|
|
| 08.05.2013, 14:30 | |
|
Создайте окно с расширенным стилем WS_EX_LAYERED и сделайте его скриншот.
Без флага CAPTUREBLT это окно чудным образом в скриншот не попадет.
0
|
|
|
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
|
|
| 08.05.2013, 14:31 | |
|
О, чудо! Оно туда попало, я уже протестировал.
0
|
|
|
Ушел с форума
|
|
| 08.05.2013, 15:15 | |
|
Какая система ? Vista, Windows 7 ? Если да, отключите "Aero" (например, можно в
"Персонализации" просто поставить классическую тему оформления) и попробуйте еще раз.
1
|
|
|
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
|
|
| 08.05.2013, 16:26 | |
|
Да, действительно, вы правы, без этого флажка не работает.
0
|
|
|
Ушел с форума
|
|
| 08.05.2013, 20:21 | |
|
Виноват, мне следовало сразу сказать про классическую/упрощенную тему,
просто за давностью уже подзабыл. Кстати, сейчас ради интереса проверил CAPTUREBLT на Windows XP - полупрозрачные окна все равно не захватываются. Может, из-за того, что в виртуальной машине... Добавлено через 41 минуту Хотя нет, это я брежу. У меня там в коде стоит StretchBlt, а он на Windows XP почему-то не захватывает полупрозрачные окна. BitBlt на этой же системе отрабатывает нормально.
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||||||||||
| 20.05.2013, 11:22 [ТС] | ||||||||||||
И ещё одно исправление:
1
|
||||||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||||
| 21.05.2013, 19:17 [ТС] | ||||||
|
Нашёл ещё две утечки памяти в SaveBMPFile () через указатели lpvBits и lpvi. Теперь вроде утечек памяти нет. Последний вариант:
1
|
||||||
|
7 / 7 / 3
Регистрация: 04.09.2016
Сообщений: 33
|
||||||||||||||||||||||||||
| 04.09.2016, 18:10 | ||||||||||||||||||||||||||
|
Поначалу не заметил второй странички обсуждений, и ковырял неисправленный код))
Доволен тем, что все утечки памяти нашёл сам)) Понимаю, что тема уже не первый год висит, однако, два вопроса не дают покоя... может кто ещё заходит сюда из создателей темы... Не знаю, какая такая тайна за этим скрывается, но мне невдомёк, наверное не хватает знаний - зачем нужна эта отдельная процедура?
bmfh.bfOffBits = GetFilePointer(BmpFile); построил основной код с bmfh.bfOffBits = SetFilePointer(BmpFile, 0, 0, FILE_CURRENT); всё работает и без inline ... Второй вопрос - для чего повторно "баловаться" с контекстом и битмапом? Заменил
Спасибо.
0
|
||||||||||||||||||||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||||
| 02.10.2016, 00:12 [ТС] | ||||||
|
...Был задан вопрос, по этому сообщению что за параметр "hwnd функции ScreenCapture". Это хэндл окна, снимок которого вы собираетесь делать.
Если делаем снимок рабочего стола, то передаём параметром 0. Тут написано, что рабочих столов (читай: мониторов) может быть несколько. Как быть в этом случае, я не знаю. Наверное, просто найти хэндл НУЖНОГО рабочего стола и передать его параметром в ScreenCapture. Так вот, в моём простом случае, вызов ScreenCapture для получения снимка всего рабочего стола (одного, основного, не тот который круто подключен дополнительным, а тот, который один,
1
|
||||||
|
0 / 0 / 0
Регистрация: 19.05.2017
Сообщений: 6
|
|
| 30.05.2017, 20:05 | |
|
Убежденный, СПАСИБО!!!
РАБОТАЕТ!!! Добавлено через 2 минуты Убежденный, СПАСИБО ВСЕ РАБОТАЕТ!!!
0
|
|
|
1 / 1 / 0
Регистрация: 24.06.2016
Сообщений: 51
|
|
| 17.11.2019, 09:19 | |
|
подскажите как сохранить в jpg формате? если делать этим способом то файл получается 50кб а если jpg то 5кб
или может есть более удобный способ сделать скриншот участка окна по HWND и сохранить в jpg в C++/CLI
0
|
|
| 17.11.2019, 09:19 | |
|
Скриншот части экрана и записать в ImageView
Как сделать скриншот экрана? Как сделать скриншот экрана? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
тв 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
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время?
Никакой пенсии. Никакого нового. . .
|