JoyGetPosEx 在 C# 中返回 165

2023-12-14

我尝试用 C# 读取 JoyStick 中的数据,只要我使用 jeyGetPos 就可以正常工作。但我需要使用joyGetPosEx,因为它提供了更多数据,例如我需要的操纵杆的旋转。

class JoyStick
{
    JOYINFO pji;
    JOYINFOEX pjiex;
    MMRESULT mmresult;

    public JoyStick()
    {
        pji = new JOYINFO();
        pjiex = new JOYINFOEX();
    }

    [StructLayout(LayoutKind.Sequential)]
    public struct JOYINFO
    {
        public uint wYpos;
        public uint wZpos;
        public uint wButtons;
    }

    [StructLayout(LayoutKind.Sequential)]
    public struct JOYINFOEX
    {
        public uint dwSize;
        public uint dwFlags;
        public uint dwXpos;
        public uint dwYpos;
        public uint dwZpos;
        public uint dwRpos;
        public uint dwUpos;
        public uint dwVpos;
        public uint dwButtons;
        public uint dwButtonNumber;
        public uint dwPOV;
        public uint dwReserved1;
        public uint dwReserved2;
    }

    [StructLayout(LayoutKind.Sequential)]
    public struct MMRESULT
    {
        public uint uJoyID;
    }

    [DllImport("winmm.dll")]
    public static extern uint joyGetNumDevs();
    [DllImport("winmm.dll")]
    public static extern MMRESULT joyGetPos(uint uJoyID, ref JOYINFO pji);
    [DllImport("winmm.dll"), System.Security.SuppressUnmanagedCodeSecurity]
    public static extern MMRESULT joyGetPosEx(uint uJoyID, ref JOYINFOEX pjiex);

    public uint getNumDevs()
    {
        return joyGetNumDevs();
    }

    private MMRESULT getPos(uint uJoyID, ref JOYINFO pji)
    {

        return joyGetPos(uJoyID, ref pji);
    }

    private MMRESULT getPosEx(uint uJoyID,  ref JOYINFOEX pjiex)
    {
        return joyGetPosEx(uJoyID, ref pjiex);
    }

    public JOYINFO getPos(uint id)
    {
        mmresult = getPos(id, ref pji);
        return pji;
    }

    public JOYINFOEX getPosEx(uint id)
    {
        mmresult = getPosEx(id, ref pjiex);
        return pjiex;
    }

    public uint getMMRESULT(){
        return mmresult.uJoyID;
    }
}

只要我尝试使用 JoyGetPosEx 读取数据,MMRESULT.uJoyID 就是 165 但joyGetPos 的值为0。 我相信 165 意味着 ID 错误,但我尝试了从 0 到 15 的每个有效 ID。

我的错误在哪里?


  1. 无需声明 MMRESULT 结构,只需使用 uint/int 作为函数 返回值,或使用enum
  2. 你必须填写dwSize field.

    pjiex.dwSize = Marshal.SizeOf(pjiex);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JoyGetPosEx 在 C# 中返回 165 的相关文章

随机推荐

  • System.Data.SqlClient.SqlException:用户登录失败

    在调试中使用我的项目没有任何问题 但是在 IIS 中运行它时出现此错误 System Data SqlClient SqlException 用户 domain name PC 登录失败 堆栈跟踪 SqlException 0x801319
  • 后缀的中缀和一元/二元运算符

    我有一段代码将中缀表达式转换为内存中的表达式树 这很好用 只是有一个小麻烦 我只是连接计算出如何正确地涉及一元运算符 正确的关联运算符 使用以下中缀表达式 1 2 3 4 我期望的 RPN 为 1 2 3 4 然而 我能找到的在线中缀后转换
  • 如何从 C# 更改 ApplicationBar 上的图像?

    我有一个带有 ApplicationBar 的小型 C 项目 但我有一个小问题 我想要在栏上有 8 个图标 而 ApplicationBar 只支持 4 个 我想出了一个解决方案 在 C 中 添加一个小 CheckBox 来询问用户是否要使
  • NATS 服务器在 Node.js 应用程序中给出 EAI_AGAIN 错误

    我正在尝试在本地运行微服务 单节点机器 我收到这个奇怪的错误 Error getaddrinfo EAI AGAIN nats service at GetAddrInfoReqWrap onlookup as oncomplete nod
  • scrapy爬行[蜘蛛名称]错误

    大家好 我正在使用 scrapy 框架和 python 构建一个网络抓取项目 在我的项目的蜘蛛文件夹中 我有两个名为蜘蛛1和蜘蛛2的蜘蛛 蜘蛛1 py class spider BaseSpider name spider1 蜘蛛2 py
  • JSP 不向 JQuery AJAX 返回数据

    这是我的功能 我正在尝试从下面的 JSP 页面获取数据 两个文件位于同一位置 我的错误是什么 sample js 包含在某些文件中 function getUnits ajax url js addunits jsp success fun
  • 如何从 Python 字典中删除键?

    我想从字典中删除一个键 如果存在 我目前使用这段代码 if key in my dict del my dict key 如果没有if语句 代码将引发KeyError如果关键是not展示 我怎样才能更简单地处理这个问题 See Delete
  • 无法访问 Newtonsoft.Json.Linq.JProperty 上的子值 - 使用 LinQ 检查 JObject 时发生错误

    我有一个包含 Json 数据的 JObject 对象 我需要收集所有 KeyValuePairs state true 在读取值之前 我想确保 JObject 至少有一个 KeyValuePairs 且 JToken Value 有 sta
  • 带有计数器或索引值的 Postgres JSONB_ARRAY_ELEMENTS

    假设我有这个order表 其中widgets列是一个jsonb array order no widgets 50 a b c 51 d e f select order no jsonb array elements text widge
  • 导入函数并使用“this”获取道具:“TypeError:无法读取未定义的属性‘renderElapsedString’”

    我是 React 新手 正在从 FullStackReact 书中创建一个时间记录应用程序 但使用 ES6 扩展 模块而不是 Create Class 话虽如此 我收到了这个错误 而且我不知道发生了什么 类型错误 无法读取未定义的属性 re
  • 在反应式表单上使用正则表达式进行 Angular 7 电子邮件验证

    在 Angular 上 我尝试使用以下正则表达式验证电子邮件 lt gt s lt gt s 0 9 1 3 0 9 1 3 0 9 1 3 0 9 1 3 a zA Z 0 9 a zA Z 2 就像下面这样 createGroupFor
  • 在 C++ 中处理许多进程的中央数据缓冲区

    我遇到了以下问题 无法决定如何继续 我有一堂课 Reader 每1 T秒获取一块数据 实际上数据来自视频帧 每秒30帧 这些块将被传递给多个对象 Detectors处理块并输出决策 然而 每个检测器在做出决定之前需要读取的块数量各不相同 例
  • 按组进行累加[重复]

    这个问题在这里已经有答案了 假设数据看起来像 group1 group2 num A sg 1 A sh 2 A sg 4 B at 3 B al 7 a lt cumsum data num 1 3 7 10 17 我需要一些团体积累的东
  • Android - 构建项目时出现多个错误

    我在构建项目时遇到这些错误 无法解决 firebase core 无法解决 multidex 无法解决 播放服务广告 无法解决 play services auth 无法解决 firebase auth license 无法解决 常见 请检
  • 黑莓录音示例代码

    有谁知道有一个好的存储库可以获取 BlackBerry 的示例代码吗 具体来说 可以帮助我学习录制音频的机制的示例 甚至可能对其进行采样并对其进行一些动态信号处理 我想读取传入的音频 如果需要的话可以逐个采样 然后对其进行处理以产生所需的结
  • 为什么 JavaScript fetch API 的响应对象是一个承诺?

    当使用 JavaScript fetch API 从服务器请求时 您必须执行类似的操作 fetch API then response gt response json catch err gt console log err Here r
  • 按下 UI 按钮时持续运行代码

    我正在做一个平台游戏在 Unity 中 球的移动方式为三个按钮 向右移 向左移动 jump 我已经拥有现在可以使用的所有功能 但要移动角色我需要继续向按钮发送垃圾邮件 而不是像我想要的那样按住它 我尝试了在教程中找到的几种方法 但是由于我仍
  • 从 testcafe 中打开的第 N 个模式中选择“确定”按钮

    我在测试中打开两个模态 我希望能够单击第二个模态中的 确定 按钮 下面 html 中的第二个选定元素 我当前的代码是 import waitForReact from testcafe react selectors import Sele
  • shinyjs - setBookmarkExclude 用于延迟 ID

    我试图从 Shiny 的反应式书签上下文中排除 ShinyJS 延迟 我看到 URL 中的延迟 ID 是自动生成的 并且始终不同 delay ad190e10123bd97f960fed7a8a9e6fde 3000 我试图通过正则表达式排
  • JoyGetPosEx 在 C# 中返回 165

    我尝试用 C 读取 JoyStick 中的数据 只要我使用 jeyGetPos 就可以正常工作 但我需要使用joyGetPosEx 因为它提供了更多数据 例如我需要的操纵杆的旋转 class JoyStick JOYINFO pji JOY