Сцепиться/Наложить игру DirectX?

Кто-либо может сказать мне, как сцепиться/наложить игру DirectX в C#?

Я попытался заставить полноэкранное окно C# перекрывать игру, однако это привычка. После исследования немного, я узнал, что должен сцепить игру и затем отобразить окно C#.

Кто-либо может объяснить, как я сделал бы это? Я смог бы отобразить форму C# по игре DirectX?

13
задан John Saunders 8 January 2013 в 03:14
поделиться

3 ответа

(раскрытие: я работаю в этой компании)

Вы можете попробовать наш Deviare API , у него есть функция для перехвата COM-объектов из C #. Это набор COM-объектов, которые можно использовать на любом языке программирования (поддерживающем COM). Доступна статья с исходным кодом, показывающая, как захватить видео и добавить наложение: инструменты Direct3D приложений для захвата видео и расчета FPS

COM Spy Console и Direct Sound Capture - два Примеры, реализующие консоль для подключения COM-объектов, таких как DirectX.

Надеюсь, это поможет.

5
ответ дан 1 December 2019 в 22:06
поделиться

Поскольку у вас нет прямого доступа DirectX из C #, это может быть сложно.

Исходя из моего ограниченного понимания концепции:

Хуки DirectX состоят из присоединения к контексту DirectX и управления им, это может / не может потребовать вмешательства в память другой программы, что лучше всего подходит для C / C ++

Хотя я могу ошибаться, но это сложная тема, и моя интуиция подсказывает мне, что у вас могут быть проблемы с .NET

2
ответ дан 1 December 2019 в 22:06
поделиться

Вы можете попробовать мой пример подключения Direct3D 9 API с помощью C # . При этом используется EasyHook - сборка .NET с открытым исходным кодом, которая позволяет устанавливать перехватчики из управляемого кода в неуправляемые функции.

Также используется SlimDX - это управляемая оболочка с открытым исходным кодом для библиотек Direct3D.

Сложная часть перехвата - это определение адресов виртуальных функций COM-объектов. В приведенном выше примере это делается с помощью небольшой вспомогательной DLL C ++, которая находит адреса из таблицы VTable. [Обновление: опубликован комментарий, в котором показано, как получить указатели функций из VTable в C # - также с учетом IntPtr для объекта com]

В примере перехватывается метод EndScene объекта IDirect3DDevice9, что также является тем местом, где вы должны хочу нарисовать любые накладки. Что касается отображения формы в наложении, я не уверен, что это будет так просто - я имею в виду, что вы можете достаточно легко визуализировать изображение, но вам придется захватывать вводы и вручную отвечать / передавать события в форму в вопрос уместно. Удачи!

16
ответ дан 1 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: