c# - Hook /覆盖 DirectX 游戏?

标签 c# directx hook overlay

谁能告诉我如何在 C# 中挂接/覆盖 DirectX 游戏?

我曾尝试让全屏 C# 窗口与游戏重叠,但它不会。 经过一番研究,我发现我需要 Hook 游戏,然后显示 C# 窗口。

谁能解释一下我将如何做到这一点? 我可以在 DirectX 游戏上显示 C# 表单吗?

最佳答案

你可以试试my example on hooking the Direct3D 9 API using C# .这利用了 EasyHook 一个开源 .NET 程序集,允许您将 Hook 从托管代码安装到非托管函数中。

还使用了 SlimDX - 这是一个围绕 Direct3D 库的开源托管包装器。

Hook 的棘手部分是确定 COM 对象的虚函数的地址。这是在上面的示例中使用从 VTable 中查找地址的小型 C++ 帮助程序 DLL 完成的。 [更新:有一条评论显示了如何在 C# 中从 VTable 获取函数指针——给 com 对象一个 IntPtr]

该示例 Hook 了 IDirect3DDevice9 的 EndScene 方法,这也是您想要绘制任何叠加层的地方。至于在叠加层中显示表单,我不太确定会这么容易——我的意思是你可以很容易地渲染图像,但你必须捕获输入并手动响应/将事件传递给表单适当提问。祝你好运!

关于c# - Hook /覆盖 DirectX 游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2649702/

相关文章:

c# - 使用 Linq 连接类的属性列表

c# - 使用 File.SetCreationTime 和 File.SetLastWriteTime 使 Windows 资源管理器隐藏文件的这些详细信息

c# - 如何立即在循环中将文本追加到 TextBlock 中?

c++ - 用于投影的 D3DX vector 数学函数?

Mercurial 传出 Hook

c# - 设置 Html.DropDownList() 的默认值

.net - 无法加载文件或程序集 X 或其依赖项之一。不是有效的Win32应用程序。 (HRESULT : 0x800700C1)

c++ - DirectX 11 每面数据

javascript - 将逻辑添加到 Mongoose 的 Model ctor 中的最佳实践是什么?

php - 如何为 "woocommerce_add_to_cart"添加过滤器或 Hook