![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
Приветствую.
Сразу скажу, это не очередная тема про то как сделать скриншот окна?! Или же, все же она самая ![]() Дело в том, что передо мной опять стоит задача снятия и получения битовой карты любого окна в системе (свернуто, за пределами экрана, слой и т.п.) Проблема в том, что, каждое из решений исключает друг друга, и какую то нишу окон не охватывает, по крайней мере мне известных решений. 1. GetWindowDC, BitBlt - да супер, но свернутые и часть, которая за экраном, окна выходят черные, т.е. не получаем скриншот. 2. PrintWindow - лучше вариант, и свернутые и вообще где бы ни было окно, выходит "качественный" скриншот, НО, очень мизирное количество приложений под Windows обрабатывает, корректно, данное сообщение, а именно WM_PRINT (и аналогичные) 3. DWM - только в Seven/Vista, причем надо включить предварительно в настройках. Почему он? Получаем в real-time thumbnail и можем его распологать где и на чем угодно, но опять таки, хоть и могу пожертвовать совместимостью, но DWM API не дает API для получения именно битовой карты thumbnail'а, что не есть хорошо в моей ситуации. Хак? Тоже спорный вопрос. Внедряться в dwm.exe, перехватывать обраточик (попробуй найди его еще...) который формирует очередной кадр для созданного thumbnail, и в нем вытягивать и информировать мое приложение о новом кадре уже с битовой картой. В итоге, к чему все это? Как по мне лучший вариант 3й, но там много спорных вопросов, и не очень рвусь хакать dwm.exe. Может я упустил какие то варианты? Прошу, выскажитесь здесь ![]() Спасибо. |
![]() |
![]() |
![]() |
#2 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
![]()
А какой функцией вы получаете thumbnail через dwm? И какого он типа?
P.S. я на самом деле не думаю, что там что-то типа HBITMAP... |
![]() |
![]() |
![]() |
#3 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
DWM API. Там HTHUMBNAIL, и вы с помощью API сообщаете на каком окне и где (RECT) расположить вывод, а выводит уже сама система, а именно DWM. А вот как получить биты... уже секрет. Скачал хак, ребята постарались, хакнули dwm, там действительно DirectX, и они хакают CreateDevice функцию. Но на столько все закручивать смысла нет.
|
![]() |
![]() |
![]() |
#4 | |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
![]() Цитата:
Я понимаю, решение не ахти, но это лучше чем хакать dwm.exe. |
|
![]() |
![]() |
![]() |
#5 | |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Screenshot на WInAPI | susel | Win Api | 3 | 28.04.2010 21:04 |
Зациклился ScreenShot | Streetmagic | Мультимедиа в Delphi | 1 | 10.04.2010 17:42 |
Screenshot | W0LF | Общие вопросы Delphi | 4 | 10.10.2009 00:47 |
Capture image from webcamera | iLeshik | Win Api | 3 | 10.05.2009 09:48 |
screenshot | nicky | Общие вопросы C/C++ | 2 | 12.04.2009 14:12 |