微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SlimDX:Joystick.Poll成功断开游戏手柄

我对SlimDX有一个好奇的问题:我们已经在Windows 7上看到了这个问题,并且还没有testing其他版本:我正在使用一捆便宜的USB游戏手柄(没有序列号),有时候一个物理游戏手柄结束向多个Joystick对象提供input。

该场景是:

将游戏手柄1插入到集线器插槽1. Pad在DirectInput.GetDevices显示为GUID f17b2d30。 为平板创buildJoystick对象。

将游戏手柄2插入到插槽2中。Pad作为GUID 5187d2d0出现在DirectInput.GetDevices中。 为平板创buildJoystick对象。

按下游戏手柄2上的button。不改变状态。

按下游戏手柄1上的button。在两个对象上的Poll()之后,button出现在GetCurrentState() 。

拔下游戏手柄2.其对象上的Poll()方法继续无误地返回,但不再出现在DirectInput.GetDevices 。

按下游戏手柄1上的button。在两个对象上的Poll()之后,button出现在GetCurrentState() 。

我已经在debugging器中检查了对象。 每个Joystick通过information.InstanceGUID引用正确的GUID,但在Properties.InterfacePath每个都有相同的USBpath。

游戏手柄硬件似乎正常工作 – 如果我使用控制面板游戏手柄testing仪执行相同的操作,游戏手柄保持不同。

有Robocopy的API包装吗?

在.NET中的远程机器上获取环境variables的真实值

通过远程桌面提高WPF应用程序的速度?

如何将aspnet_compiler更新到4.6.1?

数据库提取多个图像到PictureBox

DirectInput GUID似乎是基于USB PID和VID分配的,然后是相同的游戏手柄插入的顺序,而不是它们插入的USB端口的物理path。 如果我混合使用不同型号的游戏手柄,问题就会消失。

这感觉就像一个SlimDX甚至是一个DirectInput的错误 – 有没有解决这个问题的方法

与Windows服务运行UI

OraOLEDB.Oracle提供者未在本地机器上注册

从.Net的angular度来看windows服务的体系结构

Perfmon,PerfMonitor和PerfView

如何从PowerShell中访问Web服务?

我的最终答案是完全放弃DirectInput,然后转到RawInput。 我实现了一个小的C DLL来连接我的C#代码和RawInput。

我有两个限制: 在XP下 查找设备名称和崩溃读取设备信息 。 这些都不是我的应用程序的关键问题。

示例C ++源代码有点长,以适应答案, 所以在这里

从C#调用使用这些签名:

[DllImport("Adapters.dll",CallingConvention = CallingConvention.Cdecl)] private static extern int InitialiseGamepads(IntPtr hwnd); [DllImport("Adapters.dll",CallingConvention = CallingConvention.Cdecl)] private static extern IntPtr GetDevicePath(int index); [DllImport("Adapters.dll",CallingConvention = CallingConvention.Cdecl)] private static extern int PollDeviceChange(); [DllImport("Adapters.dll",CallingConvention = CallingConvention.Cdecl)] private static extern int ProcessInput(IntPtr wParam,IntPtr lParam,out byte buttons,out int x,out int y);

我想,你应该使用:

Joystick joy; string UniquePathForEachJoystick = joy.Properties.InterfacePath.ToString();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐