场景:我已经为我的四轴飞行器编写了一些基本的控制程序。基本上,我使用连接了游戏手柄的笔记本向我的四轴飞行器发送命令,两者都通过无线电相互连接。这个设置工作得非常好,但是:
问题:我的笔记本电脑上运行的 Win32 应用程序如何接收游戏手柄状态更改,即使窗口不在焦点上?我知道像 AutoHotKey 和 AutoIt 之类的一些程序正好提供了这一点,但是我在官方 XInput 文档和互联网上都找不到任何文档。
问题是,我有时也在同一个笔记本上同时使用 ArduPilot 的 Mission Planner 软件。所以每次我想在 Mission Planer 中查看一些遥测数据时,处理游戏手柄内容的应用程序窗口就会失去焦点,并且它停止接收游戏手柄状态变化,这很烦人,而且,老实说,也有点危险,因为我应该一直有一个工作无线电控制器。
那么,有没有办法将游戏手柄 XInput “锁定”到特定的窗口句柄?(Win32) 应用程序是用 C++ 和 Visual Studio 编写的。
编辑:我使用本机 XInput API,因此我使用 XInputGetState()。我的消息循环旨在每次没有要翻译的消息时轮询 XInputGetState()-/DispatchMessage(),并且使用非阻塞 PeekMessage() 轮询 WinMessage。