我正在尝试构建一个可以通过游戏手柄进行独占访问的应用程序。这意味着当我的应用程序运行时,没有其他应用程序会接收或响应游戏手柄操作,如按钮按下,滚轮移动,......
我现在的方法是使用DirectInput,设置标志:DISCL_EXCLUSIVE | DISCL_BACKGROUND。
但是,我意识到DISCL_EXCLUSIVE似乎没有效果?每当我设置DISCL_EXCLUSIVE或DISCL_NONEXCLUSIVE它都是一样的。
昨天我发现了这个:http://www.gamedev.net/topic/656250-directinput-exclusive-access-to-joypad/ 根据他提到的,这面旗帜什么都不做?
那么我的问题还有其他解决办法吗?感谢。
答案 0 :(得分:0)
但DISCL_EXCLUSIVE | DISCL_BACKGROUND
不会授予您对设备的独占访问权限。前台应用程序始终具有优先权,不包括或不包含。你不应该从用户那里窃取控制权。
那有什么好处?多个应用程序在后台运行。这几乎是唯一的用例,也是从用户角度来看唯一合理的点。当一个应用程序请求对已经被独占使用的设备进行独占访问时,其中一个将失败(IIRC旧版本)并且必须重新获取该设备(当然它不应该,因为那只会在战争中结束)控制:))。
对于大多数情况,您应该只使用DISCL_NONEXCLUSIVE | DISCL_FOREGROUND
。独家后台访问仅适用于控制媒体播放器或类似内容的内容:)