【问题标题】:Identify device in windows hook在 windows 挂钩中识别设备
【发布时间】:2016-12-19 13:50:59
【问题描述】:

我正在尝试通过条形码扫描仪(作为键盘连接)为记录特定扫描代码编写后台应用程序。我编写了代码,它工作正常,但我想定义可以将输入发送到我的应用程序的设备

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
}

谢谢

【问题讨论】:

  • 如果您需要设备信息以及输入事件,您必须使用Raw Input
  • 如果我使用 RegisterRawInputDevices 并捕获 INPUT 消息,我有正确的设备,但是,我的回调 LowLevelKeyboardProc 在我收到 INPUT 消息之前调用(
  • 你为什么要使用低级钩子?它不提供任何设备信息。如果您需要处理来自特定设备的事件,请仅使用原始输入事件,不要使用低级挂钩。原始输入消息为您提供输入的键盘数据。此外,原始输入 API 允许您注册特定设备以将事件发送到特定 HWND,因此当您收到输入消息时,您已经知道它们来自哪个设备,而无需从消息数据中找出。我认为你让事情变得过于复杂,以至于你试图完成的事情。
  • 我使用低级钩子,因为我需要防止输入一些符号,所以,可能存在更简单的方法来做到这一点......

标签: c++ winapi keylogger


【解决方案1】:

感谢大家,我找到了解决这个问题的方法 - 这是库 interception

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 2021-04-06
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多