【问题标题】:How can I access a hardware button in Java如何访问 Java 中的硬件按钮
【发布时间】:2013-03-16 03:52:27
【问题描述】:

我有一个运行 windows7 的工业触摸屏平板设备(one)。 它具有集成的 RFID/条形码扫描仪和摄像头。两者都可以通过硬件按钮启动。我想知道,每当按下这些按钮之一。 我用 GlobalKeyEventListener 编写了一个小型测试应用程序,但是当按下其中一个按钮时没有触发任何事件。所有正常的键盘事件都会被触发。 有谁知道,是否以及如何在 Java 中访问这些类型的按钮事件?在告诉客户这是不可能的之前,我还应该尝试什么。 谢谢。

【问题讨论】:

  • 如果事件在您按下该特定键时未触发,而在您按下普通键盘键时触发,则硬件键未注册为虚拟键。我的建议是让事件侦听器查看硬件按钮更改的属性,一旦更改,您就可以对其进行操作。

标签: java events button hardware


【解决方案1】:

将有一些用于侦听这些按钮的编程接口,并且不太可能与内置的 Java 虚拟机建立连接。我会考虑编写一个程序/服务/任何侦听这些按钮的东西我可以编译成 Windows DLL,然后我会从 Java 程序中调用 DLL。 Windows DLL 可以监听事物,Java 类可以将自己注册为来自 DLL 的事件的监听器。这不太可能是微不足道的,对我来说最难的部分是 DLL 程序本身(那里没有 java、C 或 C# 或 Microsoft 喜欢的东西),然后是 Java Native Interface 或 API 或任何调用 DLL 的东西。

如果你走得那么远,我会推荐一个我不记得名字的产品;它允许您在完全不使用任何 JNI '胶水' 代码的情况下调用 DLL,也就是说,过去您必须使用一组非常特定的规则编写 C 代码才能从 Java 调用,而这个其他产品很好地完全消除了这种情况。

祝你好运。

【讨论】:

  • 取决于按钮的作用。我用一个非常简单的解决方案解决了一个类似的问题。在我的情况下,要么使用 C/ASM,要么不断寻找属性变化。在我的情况下,我能够将我的应用程序作为后台进程的一部分运行,以不断监听注册表中的属性更改。每次按下按钮时都会发生这种情况,因为属性发生了变化,我可以对其采取行动。
猜你喜欢
  • 2019-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多