-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
}
感谢
如果您需要设备信息以及输入事件,则必须使用[原始输入](https://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx)。 – IInspectable
如果我使用RegisterRawInputDevices并捕获INPUT消息,我已经有了正确的设备**,但是**,我的回调函数LowLevelKeyboardProc比我收到的INPUT消息早被调用( –
)为什么要使用低级别的钩子?它不提供任何设备信息如果您需要处理来自特定设备的事件,则仅使用原始输入事件,不要使用低级别钩子原始输入消息为您提供输入的键盘数据另外,原始输入API可以让你注册特定的设备来发送事件给特定的HWND,所以当你接收到输入消息时,你已经知道他们来自哪个设备,而不必从消息数据中找出它,我认为你正在使事情变得复杂,你正试图完成。 –