【发布时间】:2019-01-23 14:14:20
【问题描述】:
我创建了一个简单的独立 Java 应用程序 (JAR),它通过虚拟 COM 端口连接到 Honeywell 条形码扫描仪(使用 RxTx 库来设置 COM 连接)。
连接后,程序接收来自扫描器的输入,使用一些自定义逻辑对其进行转换,最后使用Robot 类将转换后的输出重定向到标准输出。没什么复杂的。
因此,如果我运行程序然后扫描值“A”,应用程序会将其转换为“B”,并且当记事本处于活动状态(或其他一些输入字段/程序)时,输出“B”就好像它最初是由扫描仪扫描的。
当作为 jar 文件(或包装 bat 文件)运行时,该程序可以完美运行。但是,当将此 JAR/BAT 文件包装为 Windows 服务(使用 JSW Community Edition 或 YAJSW)时,程序将完美运行,但不会输出 Robot.class 执行的“模仿”击键。
我什至使用 JNA 库和 sendInput() 方法(作为 Robot 类的替代品)来创建尽可能接近操作系统级别的击键,但这也不起作用......我也试过使服务interactive 但这也不起作用。目前我的选择不多了。
所以我的问题是:作为 Windows 服务运行时不能生成键盘按下事件是否正确?我可以想象这可能是一个很大的安全问题,因此可能是不允许的。
非常欢迎任何反馈或可能的解决方案!非常感谢!
【问题讨论】:
标签: java serial-port windows-services barcode-scanner keyboard-events