|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.11.2010, 23:57 | #1 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Windows, capture screenshot
Приветствую.
Сразу скажу, это не очередная тема про то как сделать скриншот окна?! Или же, все же она самая Дело в том, что передо мной опять стоит задача снятия и получения битовой карты любого окна в системе (свернуто, за пределами экрана, слой и т.п.) Проблема в том, что, каждое из решений исключает друг друга, и какую то нишу окон не охватывает, по крайней мере мне известных решений. 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. Может я упустил какие то варианты? Прошу, выскажитесь здесь Спасибо. |
07.11.2010, 01:28 | #2 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
А какой функцией вы получаете thumbnail через dwm? И какого он типа?
P.S. я на самом деле не думаю, что там что-то типа HBITMAP... |
07.11.2010, 09:56 | #3 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
DWM API. Там HTHUMBNAIL, и вы с помощью API сообщаете на каком окне и где (RECT) расположить вывод, а выводит уже сама система, а именно DWM. А вот как получить биты... уже секрет. Скачал хак, ребята постарались, хакнули dwm, там действительно DirectX, и они хакают CreateDevice функцию. Но на столько все закручивать смысла нет.
|
07.11.2010, 13:20 | #4 | |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Цитата:
Я понимаю, решение не ахти, но это лучше чем хакать dwm.exe. |
|
07.11.2010, 14:00 | #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 |