Форум программистов, компьютерный форум, киберфорум
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 81

Скриншот на WinApi

20.07.2018, 03:11. Показов 1409. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени! Подскажите либу с помощью которой можно сделать скрин и сохранить в jpg.
Можно даже либу которая конвертирует bmp в jpg, так как в бмп скрин сделать получилось на апях.
Спасибо.

Добавлено через 4 часа 0 минут
UP! В поисках любой инфы!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.07.2018, 03:11
Ответы с готовыми решениями:

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

Сделать скриншот средствами WinAPI
Может есть у кого код функции, чтобы делала скрин рабочего стола и сохраняла в JPG файл ? делаю средствами DirectX ... без него нужно...

Программа падает на Marshal.Copy при попытке сделать скриншот через WinAPI
Доброго, требуется "грабить" экран, задача вроде тривиальная но все же есть косяки: Одно из условий: нет возможности использовать...

11
Модератор
 Аватар для D1973
9903 / 6441 / 2454
Регистрация: 21.01.2014
Сообщений: 27,343
Записей в блоге: 3
20.07.2018, 05:17
Цитата Сообщение от EvaPiks Посмотреть сообщение
Можно даже либу которая конвертирует bmp в jpg
А старый добрый способ не подойдет?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
uses ..., JPEG;
...
var BMP: TBitmap;
    JPG: TJpegImage;
begin
 BMP := TBitmap.Create;
 JPG := TJpegImage.Create;
 BMP.LoadFromFile('c:\tmp\111.bmp');
 JPG.Assign(BMP);
 JPG.SaveToFile('c:\tmp\111.jpg');
 BMP.Free;
 JPG.Free;
end;
1
0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 81
20.07.2018, 06:47  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
А старый добрый способ не подойдет?
Так модуль JPEG невозможно подключить когда формы нет. Или ошибаюсь?
Так бы конечно же подошло все. С радостью бы использовал его)))

Добавлено через 4 минуты
Извиняюсь. Вомзомжно подключить все таки.
Сейчас все получилось. Но проблема в следующем:
Почему делается обрезанная часть экрана? То есть весь код с интернета что я пробовал, все обрезало где то по 50 пиклесей слева и снизу со скрина. Полагаю что это из за стандартной функции увеличения масштаба\шрифта виндовс.
Тогда как победить сие баг?
0
Модератор
 Аватар для D1973
9903 / 6441 / 2454
Регистрация: 21.01.2014
Сообщений: 27,343
Записей в блоге: 3
20.07.2018, 06:58
А где сам код снятия скриншота?
1
Модератор
 Аватар для D1973
9903 / 6441 / 2454
Регистрация: 21.01.2014
Сообщений: 27,343
Записей в блоге: 3
20.07.2018, 07:12
Не знаю, конечно, но вот эта процедура нормально снимает экран, безо всяких обрезаний... Или я чего-то не вижу...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure ScreenShot;
var c: TCanvas;
    r: TRect;
    BMP: TBitmap;
    JPG: TJpegImage;
begin
 BMP := TBitmap.Create;
 JPG := TJpegImage.Create;
 c := TCanvas.Create;
 c.Handle := GetWindowDC(GetDesktopWindow);
 try
   r := Rect(0, 0, Screen.Width, Screen.Height);
   BMP.Width := Screen.Width;
   BMP.Height := Screen.Height;
   BMP.Canvas.CopyRect(r, c, r);
   JPG.Assign(BMP);
   JPG.SaveToFile('c:\tmp\111.jpg');
 finally
   ReleaseDC(0, c.Handle);
   c.Free;
   BMP.Free;
   JPG.Free;
 end;
end;
Миниатюры
Скриншот на WinApi  
1
0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 81
20.07.2018, 07:22  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Не знаю, конечно, но вот эта процедура нормально снимает экран, безо всяких обрезаний... Или я чего-то не вижу...
К сожалению ваш код так же работает как и все.
Проверил еще на 1 ноутбуке, точно так же режет изображение. На обоих ноутах лицензия вин10.
https://www.cyberforum.ru/atta... 1532060492
Миниатюры
Скриншот на WinApi  
0
0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 81
20.07.2018, 07:25  [ТС]
Вот для наглядности. Прикрепил скрин именно тот что сделала процедура.

https://www.cyberforum.ru/atta... 1532060665
Миниатюры
Скриншот на WinApi  
0
Модератор
 Аватар для D1973
9903 / 6441 / 2454
Регистрация: 21.01.2014
Сообщений: 27,343
Записей в блоге: 3
20.07.2018, 07:27
ноут - Win 8.1, комп - Win 7, сервак - WinServer 2003 - полет нормальный
10-ки нет и в ближайшее время, хвала богам, не предвидится...
0
0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 81
20.07.2018, 07:43  [ТС]
Хорошо. Странно почему гугл не знает ответа. Как только не гуглил.. Ведь я уверен, проблема глобальная. Не может только у меня же так отрабатывать.
0
0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 81
21.07.2018, 01:59  [ТС]
Ну в итоге так и не понятно. Что за магия?
Код:
Delphi
1
2
3
4
5
  MonInfo.cbSize := SizeOf(MonInfo);
  GetMonitorInfo(MonitorFromWindow(Handle, MONITOR_DEFAULTTONEAREST), @MonInfo);
  ShowMessage(Format('Current resolution: %dx%d',
              [MonInfo.rcMonitor.Right - MonInfo.rcMonitor.Left,
               MonInfo.rcMonitor.Bottom - MonInfo.rcMonitor.Top]));
Delphi
1
showmessage(IntTostr(Screen.Width) + Inttostr(Screen.Height));
Выдает одни и те же данные. Не верные!! У меня 1920х1080. А выдает хрен знает что.
Никто не сталкивался что ли? На 2 ноутах вин 10 проверил, не работает!!!
Миниатюры
Скриншот на WinApi  
0
0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 81
21.07.2018, 02:04  [ТС]
Вот такую же интересную тему нашел. Человек так и не понял что было.
[del]
 Комментарий модератора 
Ссылка удалена: п. 5.8 Правил форума
Запрещено публиковать ссылки на другие форумы, а также их пропаганда. Публикация ссылок на форумы допустима только в разделе "Готовые движки, cms и форумы" для решения технических проблем и с предварительного одобрения администрации.

И болше 0 инфы в инете. Просто космас! Никто не фиксил такой баг что ли?
0
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
20.08.2018, 20:16
Заочно сказать сложно. Может реальный размер такой, как выдаёт, а FHD как-то типа эмулируется?
А какого размера скриншот делается через PrtScr?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.08.2018, 20:16
Помогаю со студенческими работами здесь

скриншот
Подскажите, как сделать скриншот в паскале, не прога, а снимок изображения

Скриншот
Привет! Кто может запустите пожалуйста программу и сделайте скриншот ее работы text segment 'Code' assume cs:text, ds:data myproc...

Скриншот
Доброго дня! Подскажите, как сделать скриншот, чтобы потом сохранить картинку?

Скриншот
Нашёл код который делает скрин окна: bmp:=TBitmap.Create; hSrcWnd := FindWindow(nil, PChAR('Твайт.ру — Реклама в Twitter и Facebook....

Скриншот
Всем привет . Подскажите , как увеличить текст в скриншоте , что бы на форуме без всяких манипуляций получающая сторона могла прочитать...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru