2016-12-19 3 views
-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

+1

Если вам нужна информация об устройстве вместе с входными событиями, вы должны использовать [Сырой вход] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx). – IInspectable

+0

Если я использую RegisterRawInputDevices и захватываю сообщение INPUT, у меня есть правильное устройство **, но **, мой обратный вызов LowLevelKeyboardProc вызвал раньше, чем я получаю сообщение INPUT ( –

+1

Почему вы вообще используете низкоуровневый крючок? предоставить информацию о любом устройстве.Если вам нужно обрабатывать события с определенного устройства, используйте ТОЛЬКО события «Сырье входа», НЕ используйте крючок низкого уровня. В сообщениях Raw Input вы вводите введенные данные клавиатуры. Кроме того, API Raw Input API позволяет регистрировать определенные устройства для отправки событий в конкретные HWND, поэтому, когда вы получаете входящие сообщения, вы уже знаете, с какого устройства они поступают, не имея возможности понять это из данных сообщения. Я думаю, что вы делаете слишком сложным для чего вы пытаетесь выполнить. –

ответ

0

Спасибо всем, я нашел способ решить эту проблему - это библиотека interception

Смежные вопросы