darthmaul Опубликовано 11 апреля, 2016 Поделиться Опубликовано 11 апреля, 2016 Вопрос в заголовке. Есть какие нибудь идеи реализации? Сам очень много гуглил, но так ничего рабочего не нашел. Теоретически понимаю, что без инжекта не обойтись, но как реализовать загадка. Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 12 апреля, 2016 Поделиться Опубликовано 12 апреля, 2016 http://flatassembler.net/examples/screenshot.zip годится как теоретический пример... наверно снятие скрина с д3д не особо отличается Ссылка на комментарий Поделиться на другие сайты Поделиться
darthmaul Опубликовано 12 апреля, 2016 Автор Поделиться Опубликовано 12 апреля, 2016 (изменено) 55 минут назад, gmz сказал: http://flatassembler.net/examples/screenshot.zip годится как теоретический пример... наверно снятие скрина с д3д не особо отличается при полноэкранном режиме выдает черный снимок( вот в программе фрапс при запуске происходит инжект к игре fraps32.dll Изменено 12 апреля, 2016 пользователем darthmaul Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 12 апреля, 2016 Поделиться Опубликовано 12 апреля, 2016 так оно там скринит HWND_DESKTOP, если окно д3д подсунуть? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 13 апреля, 2016 Поделиться Опубликовано 13 апреля, 2016 7 часов назад, gmz сказал: так оно там скринит HWND_DESKTOP, если окно д3д подсунуть? Не сработает. Обычный GDI, через который делается скрин, картинку D3D не "увидит". Так и будет черный экран. Надо либо подготовленный кадр выдергивать хуком, либо видео оверлей снимать. Ссылка на комментарий Поделиться на другие сайты Поделиться
darthmaul Опубликовано 14 апреля, 2016 Автор Поделиться Опубликовано 14 апреля, 2016 Разобрался, тему можно закрывать. Хук: http://www.unknowncheats.me/forum/d3d-tutorials-and-source/58599-vtable-d3d9-base.html Код для скриншота: Скрытый текст HRESULT DXI_Capture(IDirect3DDevice9* Device, const char* FilePath) { IDirect3DSurface9* RenderTarget = nullptr; HRESULT result = Device->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &RenderTarget); result = D3DXSaveSurfaceToFile(FilePath, D3DXIFF_JPG, RenderTarget, nullptr, nullptr); //SafeRelease(RenderTarget); return result; } Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения