C# DirectInput是否能够告诉斗杆上存在哪些轴?

C# DirectInput是否能够告诉斗杆上存在哪些轴?,c#,.net,sharpdx,slimdx,directinput,C#,.net,Sharpdx,Slimdx,Directinput,我目前正在编写一个允许基于事件的报告来自其他语言的棒输入(我使用的是自动热键)。 我目前使用SharpDX读取棍棒数据,但SharpDX似乎只报告棍棒报告的轴数,而不报告棍棒报告的轴数。 例如,斗杆完全可能有7个轴,但没有X轴(您可以通过安装vJoy并配置它有哪些轴来看到这一点-在vJoy配置实用程序中,取消对X轴的锁定。请注意joy.cpl中的X轴已消失)。 通过SharpDX读取斗杆盖(使用例如SharpDX.DirectInput.Magicle.Capabilities.AxeCount

我目前正在编写一个允许基于事件的报告来自其他语言的棒输入(我使用的是自动热键)。
我目前使用SharpDX读取棍棒数据,但SharpDX似乎只报告棍棒报告的轴数,而不报告棍棒报告的轴数。
例如,斗杆完全可能有7个轴,但没有X轴(您可以通过安装vJoy并配置它有哪些轴来看到这一点-在vJoy配置实用程序中,取消对X轴的锁定。请注意joy.cpl中的X轴已消失)。
通过SharpDX读取斗杆盖(使用例如
SharpDX.DirectInput.Magicle.Capabilities.AxeCount
),似乎无法判断缺少的轴是X。

底层的DirectInput API是否能够表示此信息,或者我是否需要转到类似于RawInput的内容才能获取此信息?

因此我自己解决了此问题

使用SharpDX,可以使用操纵杆.GetObjectPropertiesByName(“X”),其中“X”是轴的名称。您可以在
JoystickOffset
上调用
ToString()
,以获取轴的名称。

如果在
try
块中执行此操作,则如果它击中了锁销,则该杆上不存在该轴

啊,我注意到,
操纵杆.GetObjectPropertiesByName(“X”)
似乎在查询轴X的存在。但它似乎抛出了一个异常?VS Autos窗口显示“'test.Deadzone'抛出,异常类型为'SharpDX.SharpDXException'”,虽然我在代码中没有看到抛出异常,但我猜它可能被捕获或其他什么。这样做安全吗?