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页 下一页>尾页