Скриншот программы в файл

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GRAF
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 13.04.2011 (Ср) 17:04

Скриншот программы в файл

Сообщение GRAF » 14.04.2011 (Чт) 13:33

Программа подключена к метеостанции и выводит на форму графики метеопараметров. Они обновляются каждые 5 минут. Можно ли автоматически делать скриншот программы в файл? Приходится делать вручную через Alt+PrtScr и Irfan View. Оператор SavePicture сохраняет только части формы, а мне нужно всю форму целиком. Если это нельзя сделать в VB, то может быть есть сторонние программы, которые это умеют?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Скриншот программы в файл

Сообщение Хакер » 14.04.2011 (Чт) 14:29

GRAF писал(а):и выводит на форму графики метеопараметров

В окно.

GRAF писал(а):Можно ли автоматически делать скриншот программы в файл?

Что вызывает подозрение, что нельзя?

GRAF писал(а):Оператор SavePicture сохраняет только части формы, а мне нужно всю форму целиком.

Не оператор, а метод, стилизованный под просто функцию. Что нужно, то и сохранит.

Конкретного вопроса не видно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

GRAF
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 13.04.2011 (Ср) 17:04

Re: Скриншот программы в файл

Сообщение GRAF » 14.04.2011 (Чт) 15:22

Конкретно: как запрограммировать создание скриншота окна?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Скриншот программы в файл

Сообщение Хакер » 15.04.2011 (Пт) 12:09

GRAF писал(а):Конкретно: как запрограммировать создание скриншота окна?

Это антиконкретно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Re: Скриншот программы в файл

Сообщение VVitafresh » 15.04.2011 (Пт) 17:24

GRAF писал(а):может быть есть сторонние программы, которые это умеют?

Screenshot Creator
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: Скриншот программы в файл

Сообщение hclubmk » 15.04.2011 (Пт) 17:58

GRAF, ходи на allapi, ищи bitblt. В разделе описания этой функции есть пример Create Picture: он - твое счастье.
Научились ли Вы радоваться трудностям?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Скриншот программы в файл

Сообщение Хакер » 15.04.2011 (Пт) 18:00

BitBlt не поможет, если окно, например, свернуто или закрыто чем-нибудь (каким нибудь тултипом или баллоном).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: Скриншот программы в файл

Сообщение hclubmk » 16.04.2011 (Сб) 12:00

Хакер писал(а):BitBlt не поможет, если

Какие есть варианты для если?
Научились ли Вы радоваться трудностям?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Скриншот программы в файл

Сообщение Хакер » 16.04.2011 (Сб) 17:38

hclubmk писал(а):Какие есть варианты для если?

Что, все перечислять? Я бы вообще нашёл прямой интерфейс взаимодействия с прибором и брал данные прямо оттуда и писал в нужный файл. А если уж нужны именно графики для анализа человеком, строил графики just in time.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

hclubmk
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 240
Зарегистрирован: 19.06.2009 (Пт) 14:23
Откуда: От-туда

Re: Скриншот программы в файл

Сообщение hclubmk » 16.04.2011 (Сб) 21:19

Хакер писал(а):Что, все перечислять?

Да. Было бы неплохо расширить кругозор.
Научились ли Вы радоваться трудностям?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Скриншот программы в файл

Сообщение Хакер » 16.04.2011 (Сб) 21:36

  • WM_PRINT, который многие виндоу-классы не поддерживают,
  • WM_PAINT с подменой параметра hDC, что нелегально и неправильно, но из-за криворукости программистов часто прокатывает,
  • WM_PAINT с внедрением в процесс, перехватом BeginPaint и подсовыванием своего хендла контекста in-memory устройства.
  • Если окно(а) имеет save-bits стиль, можно докопаться до бэк-буфер хранилища (ибо оно, в отличие от общего случая, хотя бы есть) и взять скриншот прямо оттуда.
  • Если в программе есть какой-то свой save-bits заменитель, подобно VB-шному AutoRedraw-у, можно доковыряться до него. В случае с VB это вообще легко само по себе, и особенно легко мне в силу наличия метода получения интерфейсных указателей на объекты внутри процессов stand-alone VB-шных программ.
  • Найти способ и сделать виртуальный дисплей, отправить окно туда и послать WM_PAINT: окно отрисует себя в виртуальный дисплей. Потом оттуда взять графику. Есть гиперкривой способ просто сделать это: начать терминальный сеанс и получить скриншот по RDP.
  • Ну и наверняка, имея интерес, можно ещё что-то придумать по ситуации.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 97

    TopList