2016-12-19 54 views
-2

我想通过baracode扫描仪(连接为键盘)编写日志特定扫描代码的后台应用程序。我写的代码,它工作正常,但我想定义装置,可将输入发送给我的应用程序识别窗口挂钩设备

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 
} 

感谢

+1

如果您需要设备信息以及输入事件,则必须使用[原始输入](https://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx)。 – IInspectable

+0

如果我使用RegisterRawInputDevices并捕获INPUT消息,我已经有了正确的设备**,但是**,我的回调函数LowLevelKeyboardProc比我收到的INPUT消息早被调用( –

+1

)为什么要使用低级别的钩子?它不提供任何设备信息如果您需要处理来自特定设备的事件,则仅使用原始输入事件,不要使用低级别钩子原始输入消息为您提供输入的键盘数据另外,原始输入API可以让你注册特定的设备来发送事件给特定的HWND,所以当你接收到输入消息时,你已经知道他们来自哪个设备,而不必从消息数据中找出它,我认为你正在使事情变得复杂,你正试图完成。 –

回答

0

感谢所有,我发现解决这个问题的方法 - 这是库interception