Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2022, 18:09   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 623
По умолчанию Сделать скриншот

Задача такая: чтобы нажатием на кнопку делался скриншот экрана
При чем, если подключено 2 и больше экранов, чтобы была возможность сделать скриншот какого-то конкретного экрана
Kronos913 вне форума Ответить с цитированием
Старый 24.04.2022, 19:21   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
display_left_top_corner_x := 0; display_left_top_corner_y := 0; display_width := GetSystemMetrics(SM_CXSCREEN); display_height := GetSystemMetrics(SM_CYSCREEN); {для экрана по умолчанию}
BitBlt(bitmap_dc, 0, 0, display_width, display_height, GetDC(HWND_DESKTOP), display_left_top_corner_x, display_left_top_corner_y, SRCCOPY);
см. также DEVMODE.
macomics вне форума Ответить с цитированием
Старый 07.05.2022, 18:03   #3
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 623
По умолчанию

Код, который получился
Код:
var
  bmp:TBitMap;
  x, y: Integer;
Код:
  x:=Screen.Width;
  y:=Screen.Height;

  bmp.Width := x;
  bmp.Height := y;
  BitBlt(bmp.Canvas.Handle, 0,0, x, y, GetDC(0), 0,0,SRCCOPY);
Вопрос: если у меня подключено 2 экрана, как получить скриншот второго из них? Этот код делает скриншот первого только
Kronos913 вне форума Ответить с цитированием
Старый 07.05.2022, 18:08   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
см. также DEVMODE.
значит не смотрели
macomics вне форума Ответить с цитированием
Старый 08.05.2022, 16:57   #5
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 623
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
значит не смотрели
Смотрел, но не понял особо ничего
Kronos913 вне форума Ответить с цитированием
Старый 08.05.2022, 17:31   #6
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
The DEVMODE data structure contains information about the initialization and environment of a printer or a display device.
Перевожу Структура данных DEVMODE содержит информацию о инициализации и переменных окружения принтеров или экранов.
Далее внизу есть ссылки на описания функций, которые работают с этой структурой
Первая позволяет получить эту структуру для определенного экрана в системе по его имени, вторая функция перечисляет все имена экранов в системе.
Из структуры DEVMODE вам нужно 3 значения: POINTL dmPosition; определяет X, Y для BitBlt (7 и 8 параметры)
DWORD dmPelsWidth; определяет Width для BitBlt (4 параметр)
DWORD dmPelsHeight; определяет Height для BitBlt (5 параметр).
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать скриншот canvas KiwiBoo JavaScript, Ajax 1 28.11.2017 11:46
как сделать скриншот memo1 ? alman12 Общие вопросы Delphi 10 10.03.2014 21:52
Народ! Надо сделать скриншот Ivanito Общие вопросы C/C++ 0 25.05.2011 18:16
Не получается сделать скриншот C# Ski1alec C# (си шарп) 5 24.01.2011 22:56
как сделать скриншот xakkkkker Общие вопросы Delphi 1 10.02.2008 15:24