C# 在C中直接使用DirectX Dinput8.dll#

C# 在C中直接使用DirectX Dinput8.dll#,c#,directx,C#,Directx,我正在编写需要在C#中访问DirectX的应用程序。具体来说,它需要访问Dinput8.dll的DirectInput8Create函数 我真的在做一些勾当。。我现在只是想挂断电话,然后把它传过去。我只是在为DLL调用找到正确的变量类型时遇到问题 我刚刚灵机一动,我想我需要用不安全的工具来让它工作。。但我不是100%肯定 我不知道你为什么直接上钩。。。因此,由于问题的模糊性,我可能遗漏了一些东西 如果你想从c#钩住DirectX,那是一件事。。。 但是如果你只是想真正访问DX,直接输入,那么我就

我正在编写需要在C#中访问DirectX的应用程序。具体来说,它需要访问Dinput8.dll的DirectInput8Create函数

我真的在做一些勾当。。我现在只是想挂断电话,然后把它传过去。我只是在为DLL调用找到正确的变量类型时遇到问题


我刚刚灵机一动,我想我需要用不安全的工具来让它工作。。但我不是100%肯定

我不知道你为什么直接上钩。。。因此,由于问题的模糊性,我可能遗漏了一些东西

如果你想从c#钩住DirectX,那是一件事。。。 但是如果你只是想真正访问DX,直接输入,那么我就用


我以前使用过它,特别是直接输入,可以直接访问连接到windows PC的Xbox控制器,体验完全没有摩擦。

很抱歉撞到了一篇旧帖子,但是对于那些正在寻找钩子崩溃原因的人来说,它似乎是从钩子内部调用钩子函数。这会造成溢出。

如果您提供更多细节,并显示一些代码,您的问题会更好。Dinput8.dll中需要哪些函数?在托管代码中,可能有一种规范的方法来实现您想要的功能。谢谢您的支持。我确实包含了这个函数。我还指定我正在进行API挂钩。因此,我需要至少能够传递已经使用DirectInput8Create函数的应用程序使用的变量<代码>[DllImport(“Dinput8.dll”,CharSet=CharSet.Unicode,SetLastError=true,CallingConvention=CallingConvention.StdCall)]静态外部不安全的int DirectInput8Create(IntPtr hinst,UInt32 dwversion,Guid refid,out void**lpvoid,int*Fail)但还是没有乐趣。有人有想法吗?
static unsafe int CreateDevice_Hooked(IntPtr hinst,UInt32 dwversion,Guid refid,out int*[]lpvoid,void*Fail){return DirectInput8Create(hinst,dwversion,refid,out lpvoid,Fail)}
最新版本的代码。。。它的效果好一点。。但仍然冻结了应用程序。#DX不支持DX8,不幸的是,目前他们对DX9有实验性支持。@JonathanDickinson我不知道你为什么这么认为。。我现在正在看代码:很明显,他正在调用Dinput8.dll。。。e、 g.:DInput.DirectInput8Create等Hmmm。。。然后他们的登录页就过时了:)。是的。。所以我在钓。。这是为了扩展我们已经在使用的应用程序。我需要能够在设置Dinput时捕捉到它。主要是为了从Vtables中获取指针。我们最终尝试捕获GetDeviceStatus,以便从另一个设备添加自定义输入,从中提取读数。。这是一个很长的故事,我们会写一个司机,如果我们认为这将工作,但它不会。因此,我们试图“欺骗”系统并直接插入信息。您可以使用EasyHook从.NET/C#钩住本机API: