|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как связаться со своей dll загруженной в процесс игры
Всем привет! Есть dll моя самописная, в ней функция снятия скриншота directx и opengl, функцию проверил все работает если использовать ее из моей dll.
А как можно мне получить скриншот из моей самописной exe программы? Fraps загружает fraps32.dll в игру и потом к ней обращается из fraps.exe как он это делает? |
#2
|
|||
|
|||
и ты загрузи свою длл в процесс и вызывай функцию из нее
|
#3
|
|||
|
|||
Тут дело в другом. Мне в моей программе(exe) нужна возможность снимать скриншоты fullscreen игр. Чтобы я не делал получались только черные квадраты, на просторах инета нашел что если это игра directx или opengl то нужно внедрять свою dll иначе никак, сказали мол фрапс так делает.
Разобрался как сделать и внедрить dll только не могу разобраться как теперь мне в моей программе получить скриншот. Нужно чтоб скриншот делался по запросу exe, фрапс именно так и делает |
#4
|
||||
|
||||
Ну, во-первых, можно легко снимать скриншоты обычным принтскрином, если игра запущена в оконном режиме, будь она хоть трижды на DirectX и OpenGL. Так проще, тем более, что многие современные игры это умеют.
Во-вторых, по делу: мы имеем ДЛЛ в другом процессе, т.е. требуется IPC (Interprocess Communication). Тут могут быть разные варианты, большинство из которых строятся на костылях. Вариант первый, наверно самый простой - создать в игре фейковое пустое невидимое окно и слать сообщения этому окну. В dll сделать обработчик сообщений окна. Вариант второй, тоже кривой - поднять в dll серверный сокет на localhost и принимать команды. Вариант третий - использовать пайпы (Pipes). Вариант четвертый, наркоманский - создать объект для синхронизации каким-нибудь CreateEvent, сбросить его состояние в DLL и сделать WaitForSingleObject. Когда надо сделать скрин из своего приложения менять состояние объекта. В этот момент поток выйдет из ожидания, сделает скриншот и снова сбросит состояние объекта. Вообще, на MSDN есть список предлагаемых вариантов, но большинство из них трудноприменимы. jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Shaft (13.12.2016)
|
#5
|
|||
|
|||
Во спасибо. Вариант с серверным сокетом подошел. Отправляю команду и путь куда сохранить и скриншот уже там где надо.
|