【问题标题】:Hooks Keyboard in c#C#中的钩子键盘
【发布时间】:2014-11-09 22:54:53
【问题描述】:

我想使用这个项目在后台读取我的条形码阅读器。

http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook

到我添加的时候:

        gkh.HookedKeys.Add(Keys.D0);
        gkh.HookedKeys.Add(Keys.D1);
        gkh.HookedKeys.Add(Keys.D2);
        gkh.HookedKeys.Add(Keys.D3);
        gkh.HookedKeys.Add(Keys.D4);
        gkh.HookedKeys.Add(Keys.D5);
        gkh.HookedKeys.Add(Keys.D6);
        gkh.HookedKeys.Add(Keys.D7);
        gkh.HookedKeys.Add(Keys.D8);
        gkh.HookedKeys.Add(Keys.D9);

只需阅读由 10 个数字组成的代码,我就会在我的代码中使用它。 是这样的:

D1

D2

D0

D0

D0

D0

D1

D2

第三天

D4

如何连接数字? 我正在做测试,但不起作用。

第二个问题: 如何在没有 char D 的情况下获得上述代码,如 '0000001234'?

谢谢

【问题讨论】:

  • 您正在显示由 Keys.ToString() 生成的虚拟键代码。您需要将其转换为字符。这对于产生数字的键来说非常简单,只需转换为 (char)。
  • 感谢 Hans... char cast 工作正常。相反,关于链接我该怎么办?将 AppendText 放到文本框而不是 Items.Add 到列表框就足够了...但是,我不知道如何将结果用于它

标签: c# hook


【解决方案1】:

让我向您推荐一种不同的、更有效的方式来轻松挂接您的键盘:

首先,使用 DllImport 和 PINvoke 来导入 GetASyncKeyState:

[DllImport("user32.dll")]
static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey);

那么,你就可以随意使用上面的函数了,比如:

public static bool IsKeyPushedDown(System.Windows.Forms.Keys vKey)
{
    return 0 != (GetAsyncKeyState((int)vKey) & 0x8000);
}

更多信息:PINvokeMSDN

祝你好运。

编辑:顺便说一句,如果您想使用条码阅读器,您也可以自己创建一个,或查看herehere

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-07
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    相关资源
    最近更新 更多