gpt4 book ai didi

java - 在作为 Windows 服务运行的 Java 程序中生成键盘输出

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:06:23 24 4
gpt4 key购买 nike

我创建了一个简单的独立 Java 应用程序 (JAR),它通过虚拟 COM 端口连接到霍尼韦尔条码扫描器(使用 RxTx 库来设置 COM 连接)。

连接后,程序接收来自扫描仪的输入,使用一些自定义逻辑对其进行转换,最后使用 Robot 将转换后的输出重定向到标准输出。类(class)。没什么特别复杂的。

因此,如果我运行程序然后扫描值“A”,应用程序会将其转换为“B”,当记事本处于 Activity 状态(或其他一些输入字段/程序)时,输出“B”就好像最初是由扫描仪扫描的。

当作为 jar 文件(或包装 bat 文件)运行时,该程序运行完美。但是,当将此 JAR/BAT 文件包装为 Windows 服务(使用 JSW Community Edition 或 YAJSW)时,程序将完美运行,但不会输出 Robot.class 执行的“模仿”击键。

我什至用过JNA使用 sendInput() 方法(作为 Robot 类的替代品)来创建尽可能接近操作系统级别的击键,但这也不起作用......我也尝试制作服务interactive但这也没有用。目前我的选项用完了。

所以我的问题是:作为 Windows 服务运行时不能生成键盘按下事件是否正确?我可以想象这可能是一个很大的安全问题,因此可能是不允许的。

非常欢迎任何反馈或可能的解决方案!非常感谢!

最佳答案

这是从 Windows Vista 引入的称为 session 0 隔离的规范。
充当 WindowsService 的程序没有用户界面。
请引用这些文章和文档。

Application Compatibility – Session 0 Isolation
Session 0 Isolation - Microsoft Download Center

What is Session 0 Isolation? What do I need to know about it?
Session 0 Isolation and Secure Desktop: Windows 7 AppCompat Series


此外
请尝试注册到任务计划程序。
Register task in windows task scheduler in java

在那种情况下,除非它是“仅在用户登录时运行”,否则它可能无效。
这是一篇关于 Windows Server 的文章。
show window of task scheduler schedule program.

但是,有可能即使做了也行不通。
Simple c++ program fails to run as a scheduled-task (interactive/non-interactive issue?)

关于java - 在作为 Windows 服务运行的 Java 程序中生成键盘输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54329201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com