【问题标题】:Block or swallow key stroke from reaching other threads阻止或吞下击键,使其无法到达其他线程
【发布时间】:2013-10-02 02:53:01
【问题描述】:

我正在编写一个系统托盘应用程序,它会侦听 USB 条形码扫描仪并在读取匹配的条形码后启动一个互联网站点。 (条形码扫描仪像键盘一样提供按键序列输入)。 基于这篇文章Distinguishing Barcode Scanners from the Keyboard in WinForms

我设法编写了这些功能:

  1. 程序侦听所有 WM_IMPUT 消息,并“捕捉”扫描的条形码,即使它在后台运行且未聚焦。

  2. 程序知道是用户键入键盘还是条形码扫描仪扫描,并仅选择来自扫描仪的输入(但条形码作为常规发送到前台窗口(即焦点))按键顺序,因为扫描仪就像键盘一样)。

我唯一需要做的是: 3. 如果输入来自条形码扫描仪 --> 阻止它被发送到任何其他应用程序或线程。 (假设您正在写一封电子邮件,然后您扫描 - 我不希望条形码被“输入”到您的电子邮件中)。

请帮助:是否可以阻止所有其他线程的“击键”?怎么做?

谢谢, 危害

【问题讨论】:

  • 这篇文章解释了如何做到这一点并展示了所涉及的问题。 nicholas.piasecki.name/blog/2009/02/…
  • 那篇链接的文章完全错了。使用低级键盘钩子过滤击键要容易得多,只需从回调中返回一个非零值。有大量的 C# 代码实现了 WH_KEYBOARD_LL 钩子。
  • @hanspassant,很有趣。怎么知道按键是不是来自低位钩子的条码扫描器?

标签: c# barcode-scanner


【解决方案1】:

看看this链接
这个方法应该阻止所有输入(我希望你的扫描仪仍然可以通过)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 2017-02-28
    • 2015-12-29
    • 1970-01-01
    相关资源
    最近更新 更多