-2
Я пытаюсь написать фоновое приложение для журнальных сканированных кодов через сканер штрих-кода (подключен как клавиатура). Я написал код и он прекрасно работает, но я хочу, чтобы определить устройство, которое может послать вход в мое приложениеИдентифицировать устройство в окнах hook
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
...
hhkLowLevelKybd = ::SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)LowLevelKeyboardProc, 0, 0);
...
}
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
here i need check device
// check and log code
}
Thanks
Если вам нужна информация об устройстве вместе с входными событиями, вы должны использовать [Сырой вход] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx). – IInspectable
Если я использую RegisterRawInputDevices и захватываю сообщение INPUT, у меня есть правильное устройство **, но **, мой обратный вызов LowLevelKeyboardProc вызвал раньше, чем я получаю сообщение INPUT ( –
Почему вы вообще используете низкоуровневый крючок? предоставить информацию о любом устройстве.Если вам нужно обрабатывать события с определенного устройства, используйте ТОЛЬКО события «Сырье входа», НЕ используйте крючок низкого уровня. В сообщениях Raw Input вы вводите введенные данные клавиатуры. Кроме того, API Raw Input API позволяет регистрировать определенные устройства для отправки событий в конкретные HWND, поэтому, когда вы получаете входящие сообщения, вы уже знаете, с какого устройства они поступают, не имея возможности понять это из данных сообщения. Я думаю, что вы делаете слишком сложным для чего вы пытаетесь выполнить. –