using namespace std;
int _tmain(int argc, TCHAR** argv)
{
UINT nDevices;
PRAWINPUTDEVICELIST list=0;
UINT uSize=0;
RID_DEVICE_INFO rdi;
if (!GetRawInputDeviceList( NULL,
&nDevices,
sizeof(RAWINPUTDEVICELIST)))
{
list=(PRAWINPUTDEVICELIST)malloc(sizeof(RAWINPUTDEVICELIST)*nDevices);
if(GetRawInputDeviceList( list,
&nDevices,
sizeof(RAWINPUTDEVICELIST))==-1)
{
_tprintf(_T("GetRawInputDeviceList() - [ERROR]\nError %d\n"),GetLastError());
}
else
{
_tprintf(_T("GetRawInputDeviceList() - [OK]\n"));
CMyString str;
for(UINT i=0; i< nDevices; i++)
{
str.SetNull();
switch(list.dwType)
{
case RIM_TYPEHID:
str=_T("HID");
break;
case RIM_TYPEKEYBOARD:
str=_T("Keyboard");
break;
case RIM_TYPEMOUSE:
str=_T("Mouse");
break;
}
memset(&rdi, 0, sizeof(RID_DEVICE_INFO));
rdi.cbSize=sizeof(RID_DEVICE_INFO);
if(GetRawInputDeviceInfo( list.hDevice,
RIDI_DEVICEINFO,
&rdi,
&uSize)>0)
{
switch(list.dwType)
{
case RIM_TYPEMOUSE:
_tprintf( _T("Device [%d]\n\ttype: %s\n\t")
_T("id=%d\n\tbuttons=%d\n\t")
_T("rate=%d\n\twheel=%d\n"), i, str.GetBuffer(),
rdi.mouse.dwId,
rdi.mouse.dwNumberOfButtons,
rdi.mouse.dwSampleRate,
rdi.mouse.fHasHorizontalWheel);
break;
case RIM_TYPEKEYBOARD:
_tprintf( _T("Device [%d]\n\ttype: %s\n\t")
_T("func keys=%d\n\t")
_T("indicators=%d\n\t")
_T("total keys=%d\n"), i, str.GetBuffer(), rdi.keyboard.dwNumberOfFunctionKeys,
rdi.keyboard.dwNumberOfIndicators, rdi.keyboard.dwNumberOfKeysTotal);
break;
case RIM_TYPEHID:
break;
};
}
else
{
//_tprintf(_T("Device [%d] type: %s\n"), i, str.GetBuffer());
}
}
}
}
else
{
_tprintf(_T("GetRawInputDeviceList() - [ERROR]\n"));
}
_tprintf(_T("press any key to close this window...\n"));
wcin.get();
return 0;
}
Raw Input
Код:
Тут CMyString - самописный класс строки (не суть).
Все выводится как надо, только в два раза больше. У меня 1 мышь и 1 клавиатура, а результат такой:
Цитата:
GetRawInputDeviceList() - [OK]
Device [0]
type: Keyboard
func keys=0
indicators=0
total keys=0
Device [1]
type: Keyboard
func keys=12
indicators=3
total keys=101
Device [2]
type: Mouse
id=2
buttons=2
rate=60
wheel=0
Device [3]
type: Mouse
id=32
buttons=3
rate=200
wheel=0
Может кто знает как из списка выбрать нужные устройства? Спасибо!
Вчера на ноутбуке нашел аж 9 устройств( подключено 3)! Что же это за устройства такие?