Кто-либо может сказать мне, как сцепиться/наложить игру DirectX в C#?
Я попытался заставить полноэкранное окно C# перекрывать игру, однако это привычка. После исследования немного, я узнал, что должен сцепить игру и затем отобразить окно C#.
Кто-либо может объяснить, как я сделал бы это? Я смог бы отобразить форму C# по игре DirectX?
(раскрытие: я работаю в этой компании)
Вы можете попробовать наш Deviare API , у него есть функция для перехвата COM-объектов из C #. Это набор COM-объектов, которые можно использовать на любом языке программирования (поддерживающем COM). Доступна статья с исходным кодом, показывающая, как захватить видео и добавить наложение: инструменты Direct3D приложений для захвата видео и расчета FPS
COM Spy Console и Direct Sound Capture - два Примеры, реализующие консоль для подключения COM-объектов, таких как DirectX.
Надеюсь, это поможет.
Поскольку у вас нет прямого доступа DirectX из C #, это может быть сложно.
Исходя из моего ограниченного понимания концепции:
Хуки DirectX состоят из присоединения к контексту DirectX и управления им, это может / не может потребовать вмешательства в память другой программы, что лучше всего подходит для C / C ++
Хотя я могу ошибаться, но это сложная тема, и моя интуиция подсказывает мне, что у вас могут быть проблемы с .NET
Вы можете попробовать мой пример подключения Direct3D 9 API с помощью C # . При этом используется EasyHook - сборка .NET с открытым исходным кодом, которая позволяет устанавливать перехватчики из управляемого кода в неуправляемые функции.
Также используется SlimDX - это управляемая оболочка с открытым исходным кодом для библиотек Direct3D.
Сложная часть перехвата - это определение адресов виртуальных функций COM-объектов. В приведенном выше примере это делается с помощью небольшой вспомогательной DLL C ++, которая находит адреса из таблицы VTable. [Обновление: опубликован комментарий, в котором показано, как получить указатели функций из VTable в C # - также с учетом IntPtr для объекта com]
В примере перехватывается метод EndScene объекта IDirect3DDevice9, что также является тем местом, где вы должны хочу нарисовать любые накладки. Что касается отображения формы в наложении, я не уверен, что это будет так просто - я имею в виду, что вы можете достаточно легко визуализировать изображение, но вам придется захватывать вводы и вручную отвечать / передавать события в форму в вопрос уместно. Удачи!