C#手柄控制

C#手柄控制
预览:

前段时间花38元从网上买了一对北通的USB 游戏手柄,这样周末与晚上的休闲时间就可以玩玩孩儿时的SFC 与街机模拟游戏了。

某日在某个网站上玩一个Flash 游戏时,突然想到,如果也能使用手柄来玩Flash 游戏,那该多爽。但可惜的是,目前的Flash 都是不支持对游戏手柄进行编程,这不免是Flash 中的一个遗憾。。

虽然Flash 中不支持对游戏手柄进行编程,但我们可以换种方法,做一个辅助程序(外挂? ),将手柄中的操作事件转换为Flash 中可接受的键盘与鼠标操作事件,这样不就可以使用游戏手柄来玩Flash 游戏了吗?!于是,上网查了相关资料,但却发现只有C 方面的案例,而C#一个也找不,这不打紧,自己动手,丰衣足食。

(注:类似这样的功能,网络已有现成的软件,是一个日本人开发的,叫JoyToKey)

对游戏手柄进行操作,大概有两种方式:采用系统API 或者使用DirectInput 操作游戏手柄设备。(也许还有其它方式,但我的知识范围有限,其它方式就不得而知了)

采用系统API 是一种最简单的方式,因为系统已帮我们封装好了所有细节,我们只要在程序中定时取得游戏手柄设备的状态就可以了(轮循)。 操作游戏手柄(杆)的API 有以下几个:

函数名称 函数说明

joyGetNumDevs 获取当前系统支持的游戏设备数量

joyGetDevCaps 查询获取指定的游戏杆设备以确定其性能 joySetCapture 向系统申请捕获某个游戏设备并定时将该

设备的状态值通过消息发送到某个窗口

joyReleaseCapture 释放对某个游戏设备的捕获

joyGetPos 获取游戏设备的坐标位置和按钮状态 joyGetPosEx 获取游戏设备的坐标位置和按钮状态 joyGetThreshold 查询指定的游戏杆设备的当前移动阈值 joySetThreshold 设置指定的游戏杆设备的移动阈值

第1页/共15页 下一页>尾页