Перейти к содержанию

Скриншот с полноэкранного(оконного) приложения на directx8,9 по средствам C++


Рекомендуемые сообщения

Вопрос в заголовке. Есть какие нибудь идеи реализации? Сам очень много гуглил, но так ничего рабочего не нашел. Теоретически понимаю, что без инжекта не обойтись, но как реализовать загадка.

Ссылка на комментарий
Поделиться на другие сайты

55 минут назад, gmz сказал:

http://flatassembler.net/examples/screenshot.zip

годится как теоретический пример... наверно снятие скрина с д3д не особо отличается

при полноэкранном режиме выдает черный снимок(

 

вот в программе фрапс при запуске происходит инжект к игре fraps32.dll

Изменено пользователем darthmaul
Ссылка на комментарий
Поделиться на другие сайты

7 часов назад, gmz сказал:

так оно там скринит HWND_DESKTOP, если окно д3д подсунуть?

Не сработает. Обычный GDI, через который делается скрин, картинку D3D не "увидит". Так и будет черный экран. Надо либо подготовленный кадр выдергивать хуком, либо видео оверлей снимать.

Ссылка на комментарий
Поделиться на другие сайты

Разобрался, тему можно закрывать.

 

Хук:

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;
}

 

 

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.