您现在的位置: 中国教师站 >> 教师关注 >> 电脑技术 >> 编程技术 >> Visual C >> 正文

Google
获取游戏手柄的按键输入
作者:Siny 文章来源:中国教师站cn-teacher 点击数: 更新时间:2007-4-22 11:37:43

//可以查看按游戏手柄按钮时的情况.

//USB接口的游戏手柄

//编译环境:Windows 2000 server+VC++ 6.0+Win2K DDK

#include <stdio.h>
#include <windows.h>
#include <setupapi.h>
#include <tchar.h>
extern "C"
{
#include <hidsdi.h>
}

void main()
{
 GUID HidGuid;

 // 查找本系统中HID类的GUID标识
 HidD_GetHidGuid(&HidGuid);
 _tprintf("系统中HID类的GUID标识为:%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x ",
   HidGuid.Data1,HidGuid.Data2 ,HidGuid.Data3 ,
   HidGuid.Data4[0],HidGuid.Data4[1],HidGuid.Data4[2],
   HidGuid.Data4[3],HidGuid.Data4[4],HidGuid.Data4[5],
   HidGuid.Data4[6],HidGuid.Data4[7]);
 
 // 准备查找符合HID规范的USB设备
 HDEVINFO hDevInfo = SetupDiGetClassDevs(&HidGuid,
           NULL,
           NULL,
           DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
 if (hDevInfo == INVALID_HANDLE_VALUE)
 {
  _tprintf("符合HID规范的USB设备发生错误 ");
  return;
 }

 _tprintf("正在查找可用的USB设备... ");

 DWORD MemberIndex = 0;
 SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
 BOOL bSuccess = FALSE;

 DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
 do
 {
  bSuccess = SetupDiEnumDeviceInterfaces(hDevInfo,
             NULL,
             &HidGuid,
             MemberIndex,
             &DeviceInterfaceData);
  if ((!bSuccess) && (GetLastError() == ERROR_NO_MORE_ITEMS))
  {
   if(MemberIndex == 0)
    _tprintf("抱歉,未找到可用的USB设备! ");
   else
    _tprintf("没有更多的可用的USB设备! ");

   SetupDiDestroyDeviceInfoList(hDevInfo);
   return;
  }
  _tprintf("找到了一个USB设备: ");
  //若找到了一个USB设备,则获取该设备的细节信息
  PSP_DEVICE_INTERFACE_DETAIL_DATA pDeviceInterfaceDetailData;
  DWORD Length = 0;
  
  SetupDiGetDeviceInterfaceDetail(hDevInfo,
          &DeviceInterfaceData,
          NULL,
          0,
          &Length,
          NULL);
  pDeviceInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(Length);
  pDeviceInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);  //MUST BE!!!

  if (!SetupDiGetDeviceInterfaceDetail(hDevInfo,
          &DeviceInterfaceData,
          pDeviceInterfaceDetailData,
    &nbs

[1] [2] [3] 下一页

相关专题:
 
 网友评论:(评论内容只代表网友观点,与本站立场无关!)
GOOGLE广告

阅读排行

相关文章

没有相关文章

| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
中国教师站

中国教师站 版权所有 Copyright © 2006-2020 All Rights Reserved 站长:Sina & Siny
[备用域名:www.JXZYW.Com] 有事请留言有事请留言
【实力成就精品 诚信呵护品牌】

信息产业部备案
苏ICP备06018635号