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 的相关文章

  • 向进度条添加百分比文本 C#

    我有一个方法可以显示进程栏何时正在执行以及何时成功完成 我工作得很好 但我想添加一个百分比 如果完成 则显示 100 如果卡在某个地方 则显示更少 我在网上做了一些研究 但我无法适应我正在寻找的解决方案 这是我的代码 private voi
  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • Cmake 链接共享库:包含库中的头文件时“没有这样的文件或目录”

    我正在学习使用 CMake 构建库 构建库的代码结构如下 include Test hpp ITest hpp interface src Test cpp ITest cpp 在 CMakeLists txt 中 我用来构建库的句子是 f
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • System.IO.FileNotFoundException:找不到网络路径。在 Windows 7 上使用 DirectoryEntry 对象时出现异常

    我正在尝试使用 DirectoryEntry 对象连接到远程 Windows 7 计算机 这是我的代码 DirectoryEntry obDirEntry new DirectoryEntry WinNT hostName hostName
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com
  • 当我使用 OpenSSL1.1.0g 根据固定的 p 和 g 值创建 Diffie Hellman 密钥协议密钥时,应该执行哪些检查?

    您好 我尝试通过这段代码使用修复 p 和 g 参数来制作 Diffie Hellman Keysanswer https stackoverflow com a 54538811 4706711 include

随机推荐

  • 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