C#如何为指定其他进程禁用Controller/Gamepad游戏手柄功能
方案1:C#实现拦截指定进程的游戏手柄检测
- API挂钩注入方案:
RPG Maker 2003的手柄检测依赖底层XInput或DirectInputAPI,你可以使用C#的EasyHook库注入到目标游戏进程,挂钩XInputGetState、IDirectInputDevice8::GetDeviceState两个核心输入获取函数,强制让函数返回ERROR_DEVICE_NOT_CONNECTED(错误码1167),目标进程就会判定无可用游戏手柄,该方案不会影响你自身程序读取手柄输入。
注意RPG Maker 2003生成的游戏均为32位程序,挂钩时需使用32位版本的注入逻辑避免适配问题 - 设备权限屏蔽方案:
启动游戏时调用CreateProcessAPI创建进程,通过修改进程的设备访问控制列表,屏蔽Xbox手柄对应的HID设备路径,即可阻止游戏枚举到手柄设备,该方案无需进程注入,但需要提前枚举适配目标手柄的HID硬件ID。
方案2:直接关闭RPG Maker 2003游戏的内置手柄支持(优先推荐)
该方案无需额外开发代码,适配所有RM2003制作的游戏:
- 找到游戏根目录下的
RPG_RT.ini配置文件,在[RPG_RT]配置段下添加一行JoyPad=0,保存后启动游戏即可完全禁用内置手柄支持,游戏仅会响应键盘输入,你已实现的手柄转键盘映射逻辑可直接正常使用。 - 若游戏打包后未自带
RPG_RT.ini,可直接在游戏启动目录新建同名文件,写入以下内容即可:
[RPG_RT]
JoyPad=0
内容的提问来源于stack exchange,提问作者Markus Jim Balkhausen
相关产品推荐
相关产品推荐

