我从来没有真正在 Stack Overflow 上问过问题,尽管我遇到的几乎所有编程问题都在这里找到了答案。遗憾的是今天不是那些日子之一。
我整天都在谷歌搜索、浏览 win32 api 并尝试了各种方法,但就是找不到我要找的该死的答案。
情况是这样的:我创建了一个 Unity 项目,它使用来自操纵杆的输入,除了 unity 之外,这个项目还有其他组件,但这无关紧要,我的问题的根本是:如何我可以让应用程序在失去焦点/不活动时继续接受输入吗?
我知道这是可以做到的事实,因为 Borderlands 2 可以做到(昨天我第一次开始尝试寻找答案时发现了这一点,这让我很恼火,因为这证明了有办法,而且我找不到它)。
至少,如果有人知道如何对鼠标或键盘执行此操作,那将对我弄清楚如何将其应用于操纵杆很有帮助。
一些有用的细节:我是一名狂热且经验丰富的程序员,多年来我一直在使用 C/C++、C#、Java 和多种脚本语言编写代码。这是我的爱好,工作,业余时间,当我睡着的时候...
我做过/尝试过的事情:
- 使用
user32
中的SetFocus
+SetActive
并传递null
作为窗口 注意力不集中 - 将
WM_KILLFOCUS
添加到我想在后台读取输入的其他窗口的忽略列表 - 使用
sendmessage
欺骗其他窗口读取输入 覆盖应用程序的
inputstream
(但这是无用的意义,我无法弄清楚如何将操纵杆输入发送到 流,也是因为它仍然没有解决问题 如果其他应用程序失焦(即我打开记事本), 输入将停止。我还搜索了一种让 Unity 独立游戏/项目/应用程序在后台接受输入的方法,但没有任何结果。
最佳答案
不知道有没有Unity相关的解决方案,不过可以用RawInput API直接从鼠标/操纵杆/HID 硬件接收事件,无论您的应用是否处于焦点状态。
关于windows - 在失焦时接受输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18259698/