Скриншот окна

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Скриншот окна

Сообщение Sirik » 25.02.2005 (Пт) 11:11

Знаю hWnd окна. Как получить скрин этого окна (данный эффект достигается нажатием Alt+Prt Scr на активном окне)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.02.2005 (Пт) 11:12

getdc
bitblt
releasedc
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.02.2005 (Пт) 11:41

Использую BitBlt, только при использовании данной функции необходимо использовать не hWnd, а hDC.

А так спасибо

ЗЫ. И еще вопросик, можно ли отменить стандартные горячие клавиши винды? например тотже Alt+Prt Scr, или Ctrl+L и назначить свои?
Последний раз редактировалось Sirik 25.02.2005 (Пт) 11:42, всего редактировалось 1 раз.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.02.2005 (Пт) 11:42

Это не варианты. Это порядок действий :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.02.2005 (Пт) 12:26

Всё понятно. но есть одно но.

когда окно раскрыто я могу снять изображение с него, но когда оно свёрнуто, я получаю пустой экран??
Но ведь окно в любом случае имеет изображение или нет?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.02.2005 (Пт) 12:50

Свёрнутое - не имеет. Это правда.
Изображение

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.02.2005 (Пт) 12:55

Тогда получется, что никак нельзя получить его скрин?

ЗЫ1. когда я делаю скрин, то получается скрин окна без заголовка. в принципе это не так страшно, но получается что высота моего скрина как раз с заголовком, и получается что я "хватаю" скрин окна+кусок экрана сниза. Как узнать какой высоты заголовок окна?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.02.2005 (Пт) 13:08

Вместо getdc юзай getwindowdc...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.02.2005 (Пт) 13:14

2 GSerg
Спасибо, оно!

Теперь следующий вопрос:
как узнать состояние окно, т.е. свернуто, развёрнуто... ?

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.02.2005 (Пт) 13:37

И ещё один вопрос:
если на выбранном окне находится другое, то почему при скрине я получаю выбранное окно, но с изображением то чо на него наложилось, в данном случае другое окно?
что нельзя снять скрин именно того что на окне есть?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.02.2005 (Пт) 13:49

1. Через getwindowplacement
2. Дык именно это на окне и есть :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.02.2005 (Пт) 14:13

C getwindowplacement всё получилось.

Но можно как-то снять изображение с окна без внешних наложений?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.02.2005 (Пт) 14:16

Каких наложений?
Lasciate ogni speranza, voi ch'entrate.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.02.2005 (Пт) 14:34

Вот пример:

А мне надо только заднее окно
Вложения
test.zip
(29.74 Кб) Скачиваний: 20

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.02.2005 (Пт) 14:49

Так скрой остальные окна, а потом уже выполняй BitBlt. Либо сделай окно TopMost, перерисуй, соскриншоть, а затем верни обратно режим TopMost.
Lasciate ogni speranza, voi ch'entrate.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 25.02.2005 (Пт) 15:39

1. Это надо сделать очень быстро, чтобы пользователь не видел ничего
2. Я попробовал через функцию: SetWindowPos - медленно + бывает, что половина окна не успевает прорисоватся.

есть другие идеи?


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

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

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

    TopList