![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| UginL7 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 13.4.2010 Репутация: нет Всего: нет |
есть код, который делает снимок с окна IE(причём полностью всего, а не только содержимого страницы - надо именно так) .
Всё хорошо работает снимок делается, в файлик записывается, но тут оказывается интересный момент, что на IE 6 — всё отлично работает, а на IE 8 — от случая к случаю, т.е. например, если открыт сайт youip.ru — всё будет хорошо, а вот если в строку адреса передать, например mail.ru или yandex.ru — то отобразит всё, кроме содержимого страницы, на этом месте будет чёрный квадрат, причём не всегда. Может отработать корректно и всё будет отлично. вот код, которым делаю снимок и сохраняю в файл. hFind — HANDLE окна(ИЕ),
Пожалуйста подскажите, почему так. Это сообщение отредактировал(а) UginL7 - 18.8.2010, 09:57 |
|||
|
||||
| nmn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 593 Регистрация: 26.11.2005 Репутация: нет Всего: 1 |
парочку раз получил черный экран, не знаю почему, скорее всего это как то связано с обработкой сообщения WM_PRINT, могу посоветовать дважды рисовать изображение, один раз для всего окна, а один раз для содержимого страницы, хотя это будет проблематично, т.к. нужно будет найти активную вкладку
есть еще вариант, с BitBlt, но тут окно надо сначала поместить поверх всех и снять копию экрана, кстати в приведенном коде BitBlt ничего не делает, потому как перепутаны контексты Src и Dst и координаты указываются в системе координат контекста, а не экрана |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
посмотрел код до половины: зачем тут вообще bitblt?
PrintWindow в hDCMem копирует содержимое окна, на этом можно закончить, и заниматься сохранением на диск если это было сделано в целях отладки, то лучше будет выводить содержимое в другое окно, а не в нулевой девайс Добавлено через 5 минут и 24 секунды а, даже не в нулевой, в устройство самого hFind, с которого и снимается скриншот -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
hDCScr, в том виде, в которм он получен, тут вообще не нужен,
вот разве что в таком виде:
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: 1 Всего: 1 |
активная это та что SW_SHOW, т.е. WS_VISIBLE установлен - искать не проблематично.) PrintWindow должен все прекрасно копировать, почему у тебя не работает - хз.) Правда у меня тоже было недавно что раз чёрный экран, раз картинка - сделал перебор 10 пикселов, если кто то из них 0, значит не копируем. Правда этот вариант тож мне не подошел, т.к. мне не принт скрин делать надо было а вообще "украсть" окно. Сделал при помощи инжекта свой длл. Но тебе должно подойти (как вариант что бы не париться)) |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |