BitBlt делает снимок экрана, а не окна.
PrintWindow возвращает квадрат малевича, т.к. рендереры срали на WM_PRINT, а PrintWindow это по сути оболочка для WM_PRINT http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
Цитата:
The application that owns the window referenced by hWnd processes the PrintWindow call and renders the image in the device context that is referenced by hdcBlt. The application receives a WM_PRINT message or, if the PW_PRINTCLIENT flag is specified, a WM_PRINTCLIENT message. For more information, see WM_PRINT and WM_PRINTCLIENT.
Примерно год назад нашёл функцию, которая без инжектов и внедрения в DX делала скриншот именно с окон содержащих рендерер и с окон веб-браузеров. К сожалению потерял её - когда менял ноут на новый комп, забыл снять с него старые проекты.
Последний раз редактировалось BotLegacy, 13.06.2012 в 09:55.
http://forum.sources.ru/index.php?showtopic=358776
И не надо нести откровенный бред про защиты - нету никакой защиты, эта функция с любой игры возвращает квадрат малевича - хоть с Пиратов Карибского Моря, хоть с эмулятора Сеги, хоть с веб-браузера.
Последний раз редактировалось BotLegacy, 13.06.2012 в 09:59.
Ну я делал както так (других надежных способов ненашол, может и есть).
перехватываем создание интерфейса директх-девайса и при создании добавляем флаг LOCKAВLE_ВACKBUFFER иначе мы не получим к нему доступ. Запоминаем созданый экземпляр.
когда нам нужно получить отрендереный имадж - вызываем метод idirect3ddevice9 возвращающий интерфейс бекбуфера. Там 2 способа считать его - создать hdc и отблитить либо залочить и скопировать массив пикселей.
мб чето я перепутал но суть такая, и у меня работало у меня
Добавлено через 15 минут
Без инжектов хз ваще как получить доступ к буферу в неактивном окне. Контекст окна 1 фиг нам бесполезен.
Добавлено через 33 минуты
Printwindow ясен пень не будет работать так как обращаетса к gdi. Рендеры же работают конкурентно с гди и пересекаютса тока на экранной поверхности. Им пох на то что рисует само окно, а оно обычно в играх ниче не рисует вот, и квадрат малевича.
__________________
читернуть бы ништяг
Последний раз редактировалось mira, 13.06.2012 в 11:34.
Причина: Добавлено сообщение
перехватываем создание интерфейса директх-девайса и при создании добавляем флаг LOCKAВLE_ВACKBUFFER иначе мы не получим к нему доступ. Запоминаем созданый экземпляр.
Самое интересное, что этот флаг вообще не гарантирует то, что доступ можно будет получить.
А потом начинается веселье с тем что тебе нужно забрать буфер, а он тоже далеко не всегда (почему-то) может быть доступен.
А вообще мира правду говорит. Неактивное окно не заскринить просто так. (я уже на этом съел собаку).
Последний раз редактировалось Anfet, 13.06.2012 в 14:17.
mira, с помощью твоего метода и в свернутом окне можно получить скрин и оно получит именно новую отрендеренную картинку или последнюю которая рендерилась до сворачивания?
mira, с помощью твоего метода и в свернутом окне можно получить скрин и оно получит именно новую отрендеренную картинку или последнюю которая рендерилась до сворачивания?
Свернутое окно вообще не рендерится (если мы о ла2).
__________________ l2tracker - самый правильный бот для L2