1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| bool __fastcall TMain::IsKeyboardPresent(void) {
bool KB=false;
UINT nDevices,nbdev,i,ret,cbSize;
DWORD le;
tagRAWINPUTDEVICELIST org;
PRAWINPUTDEVICELIST pRawInputDeviceList;
RID_DEVICE_INFO rdi;
GetRawInputDeviceList(NULL, &nDevices, sizeof(RAWINPUTDEVICELIST));
pRawInputDeviceList = (tagRAWINPUTDEVICELIST *) malloc(sizeof(RAWINPUTDEVICELIST) * nDevices);
nbdev=GetRawInputDeviceList(pRawInputDeviceList, &nDevices, sizeof(RAWINPUTDEVICELIST));
for (i = 0; i < nbdev; i++) {
org=pRawInputDeviceList[i];
if (org.dwType==RIM_TYPEKEYBOARD) {
rdi.cbSize= sizeof(RID_DEVICE_INFO);
cbSize= sizeof(RID_DEVICE_INFO);
::GetRawInputDeviceInfo(org.hDevice, RIDI_DEVICEINFO, &rdi, &cbSize);
le=GetLastError();
}
}
KB=(le==0 && rdi.keyboard.dwNumberOfKeysTotal>0);
free(pRawInputDeviceList);
return KB;
} |
Partager