0

我正在尝试构建一个对游戏手柄具有独占访问权限的应用程序。这意味着当我的应用程序运行时,没有其他应用程序将接收或响应游戏手柄操作,如按钮按下、滚轮移动……

我目前的方法是使用 DirectInput,设置标志:DISCL_EXCLUSIVE | DISCL_BACKGROUND。

但是,我意识到 DISCL_EXCLUSIVE 似乎没有效果?每当我设置 DISCL_EXCLUSIVE 或 DISCL_NONEXCLUSIVE 它都是一样的。

昨天我发现了这个:http ://www.gamedev.net/topic/656250-directinput-exclusive-access-to-joypad/ 根据他提到的,这个标志什么都不做?

那么我的问题还有其他解决方案吗?谢谢。

4

1 回答 1

0

DISCL_EXCLUSIVE | DISCL_BACKGROUND不会授予您对该设备的独占访问权限。前台应用程序将始终具有优先权,无论是否排他。您不应该从用户那里窃取控制权。

那么它有什么好处呢?多个应用程序在后台运行。这几乎是唯一的用例,也是从用户角度来看唯一合理的一点。当应用程序请求对已被独占使用的设备进行独占访问时,其中一个将失败(IIRC 较旧的设备)并且必须重新获取该设备(它当然不应该这样做,因为这只会以战争结束用于控制:))。

在大多数情况下,您应该简单地使用DISCL_NONEXCLUSIVE | DISCL_FOREGROUND. 独家后台访问仅用于控制媒体播放器或类似的事情:)

于 2014-07-11T09:03:07.883 回答