问题标签 [directinput]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 在 Windows 窗体应用程序中使用操纵杆
我的申请有问题。我编写了一个在控制台中运行良好的代码,但我需要制作一个 GUI。这个应用程序让我用操纵杆控制鼠标。我正在使用 Direcinput 库。它是操纵杆的读取位置及其名称。
这是我的代码:
这就是我在 MyForm.h 中使用它的方式:
这是我得到的错误。
当我测试它时,我有一个 main() 函数而不是 start()。我也尝试将 enumCallback 和 enumAxesCallback 函数放入类中,但它发生了其他错误。
有没有人看到我做错了什么?
感谢您的所有回答。
directx - 直接输入未检测到鼠标按钮
我在我的游戏中使用 DirectInput 来处理输入,并且在我以前的 PC 中一切正常。但是我不得不更换我的 PC,我的新 PC 是 Dell Inspiron 3542,而 Directinput 没有检测到其中的任何鼠标按钮。
是否可以在不连接外接鼠标的情况下解决此问题?
提前致谢
c++ - 函数指针 - DInput8.dll 挂钩代码的参数用途
我一直试图弄清楚 DirectInput8 挂钩项目中一个参数的目的。我在这里制作了部分开源代码。为简洁起见,我只发布一些功能。
正如您可能注意到的那样,代码正在用重定向(挂钩)的函数替换函数。我的问题是 xCreateDevice 函数中的第一个参数对于 DirectInput8,根据我理解的文档,CreateDevice 函数占用 3 个参数。但我不确定为什么这里使用 4 个参数。它是否指向原始的“oldCreateDevice”?或者是别的什么?
我希望有人可以指导我。谢谢
java - 在 Java 中使用直接输入发送密钥?
在屏幕上显示特定图片后,我正在尝试向 DirectX 11 游戏发送一些简单的键。
问题是没有通过机器人类发送正确的密钥,根本没有发送 VK_UP。
我的想法是通过直接输入发送,只是希望它有效,但我不知道如何在 Java 中做到这一点?
用 C# 重写不是一个选项,因为我使用 sikuli for Java 进行图像识别。
c++ - 以编程方式触发 Windows 操纵杆事件?
问题
我想使用 c++ 以编程方式抛出 Windows 操纵杆移动事件,但我不确定如何。
有人提到编写我自己的自定义设备驱动程序。我以前从来没有做过这样的事情。
谁能指出我正确的方向?
我尝试了什么?
1) 我首先研究了VJoy和它的SDK作为一种方式来做到这一点。
我运行了演示代码,但它需要安装 Vjoy 驱动程序。我尝试执行此操作,但收到“在 Msvcrt.dll 文件中未找到过程入口点”错误,导致安装失败。
微软建议的修复是...
...使用 Windows XP 故障恢复控制台将 Msvcrt.dll 文件替换为原始版本。
(我相信 Msvcrt.dll 版本应该是 7.0.2600.0 但我的是 7.0.2600.5512。)
这需要一张我没有的 Windows XP CD-ROM。
2)我原以为我可以在本教程之后使用 DirectX DirectInput 组件实现同样的效果。我还安装了DirectX SDK来获取我需要的 .lib 文件和头文件。
教程说:
您需要包含 DirectInput 头文件才能使用任何 DirectInput 函数:
#include <dinput.h>
为了链接最终的应用程序二进制文件,您需要在项目中包含以下库:
dinput8.lib dxguid.lib
我正确链接了库,但是当我包含 dinput.h 并构建时,我收到以下错误
一些额外的信息
我正在使用 Windows XP。
我是 C++ 新手。
c++ - DirectInput 和 WinAPI 输入函数如何通信?
我写了一个简单的程序,它使用WinAPI SendInput()函数模拟鼠标输入,然后在使用DirectInput控制所有输入的游戏上进行测试。结果,这个程序模拟了鼠标点击。但是,据我所知,DirectInput直接与输入设备硬件通信,而 WinAPI 使用消息循环。 那么,DirectInput 和 WinAPI 是如何通信的呢?
java - Java 虚拟游戏手柄
问题 我正在开发一个自定义硬件控制器,我想在用 Java 处理它之后将它的输入映射到一个虚拟 XInput 控制器。基本上出于所有意图和目的,我想直接从 java 控制 XInput 控制器。
我想到的解决方案
- 编写设备驱动程序,这似乎是我很乐意避免的真正痛苦。我以前从未编写过设备驱动程序,也不知道如何注册 XInput 控制器。这似乎需要很长时间才能完成,我没有也不想花时间。
- 使用 PPJoy 和这个库。我想避免这种情况,因为 PPJoy 已经过时了(自我能找到的上次更新以来已超过 10 年),并且需要一个额外的层来将 DirectInput 转换为 XInput。该库也拒绝为我编译。
- 为VJoy开发一个包装器。然而,这需要从 DirectInput 重新映射到 XInput。我不熟悉 C/C++ 包装,但到目前为止这似乎是最好的选择。
有谁知道如何解决这个问题?我曾考虑跳过 XInput 并使用机器人 (AWT) 使用键盘/鼠标来完成,但游戏拒绝接收软件输入,很可能它们只读取硬件数据。模拟键盘/鼠标会很好,但不是最佳的,因为它会很尴尬,但是我无法找到一种方法来以游戏识别的方式来做到这一点。所有帮助表示赞赏!
c# - 使用 SendInput 包装器向 DirectX 应用程序发送击键时出现问题
一段时间以来,我一直在尝试将按键发送到 DirectX 应用程序,并不断删除。我是 C# 的新手,所以一些更复杂的函数就在我的脑海中,但我一直在尽我所能把它拼凑起来。
SendInput 是我似乎无法理解的事情之一。
我尝试使用一些不同的 SendInput 包装器来为我简化事情,包括:
http://inputsimulator.codeplex.com/
http://www.codeproject.com/Articles/117657/InputManager-library-Track-user-input-and-simulate
另一个叫拦截器
它们都可以很好地向大多数应用程序发送按键,但我仍然无法让它们发送到活动的游戏窗口。
我也试过 SendKeys。
我曾尝试自己放置一个键盘挂钩,但它对我来说太先进了,无法自己弄清楚,而且我的代码最终充满了错误。
我希望如果我在这里发布我的代码(简单的服务器应用程序),有人可以向我解释在哪里以及如何放置键盘挂钩。
在到处搜索之后,下面的代码片段似乎是让模拟击键在 DirectX 应用程序中工作的最佳机会,但我无法在没有大量错误和无法使用的代码的情况下将其实现到我的代码中。
我相信以下部分对我发送CTRL+T
命令有用,但我不确定 100%
我在这里真正苦苦挣扎的主要事情是如何将键盘挂钩放入我现有的代码中,并且仍然让我的服务器的其余部分正常运行。让这些击键工作是我项目的最后一部分,它开始变得非常令人沮丧,因此感谢任何帮助!
更新
我再次尝试,这次使用keybd_event()
,但由于某种原因,我遇到了同样的问题;它在任何地方都可以工作,但在游戏中。
我使用的是 VK 代码,而不是 DirectInput 代码,我不确定这是否是这里的问题,但我担心如果我使用 DI 代码而不是代码的另一部分我需要更改它我不知道。
这是我这次尝试的一个片段:
我不知道我的代码是否有问题,或者我是否仍在使用错误的方法。
更新 2
我再次尝试,这次使用SendMessage
,但我一直无法构建,因为我遇到了错误hWnd
。“当前上下文中不存在名称 hWnd”
registry - OEMDATA 注册表项
我写了一个 HID 驱动程序。我发现我需要提供以下条目才能与 DirectInput 系统交互:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_xxx&PID_xxx
我找不到这个条目的清晰和更新的描述。
c# - 使用sharpDX直接输入找不到操纵杆指南
我正在尝试将 ps3 控制器用于我正在创建的游戏。我将sharpDX.DirectInput 扩展下载到我的Visual Studio XNA 解决方案中,并使用了Valdemar 在使用C# .NET 从操纵杆中输入的答案中看似简单的代码。我已经将问题缩小到他找不到控制器的 guid,也找不到其他 USB 连接设备(如键盘)的 guid。不过,它确实适用于我笔记本电脑的集成键盘。这是我的代码:
问题是控制器保持为空,这意味着 guid 保持为空,这意味着 GetDevices 方法没有找到游戏手柄。这很奇怪,因为控制器在 Windows 7 中完美运行,并且在设备管理器中作为 HID 和 Windows 类的 Microsoft 通用控制器可见。
顺便说一句,我在使用 Microsoft.DirectX.directInput 时遇到了同样的问题。
谢谢阅读 :)