java - 使用java将键盘输入重定向到另一个进程
问题描述
我有一个使用带有 SceneBuilder 的 fxml 文件的简单 javaFX 应用程序。现在我正在尝试notepad++
从 java 启动一个进程,然后将键盘输入从当前活动视图重定向到该notepad++
进程。
基本上我会从我的 javaFX 应用程序间接写入notepadd++
到目前为止,这是我尝试使用 BufferedWriter 的代码:
ProcessBuilder pb = new ProcessBuilder("notepad++.exe");
Process p = pb.start();
InputStream stdin= p.getOutputStream();
BufferedWriter keyboardInput_writer = new BufferedWriter(new OuputStreamWriter(stdin));
Scanner sc = new Scanner(System.in);
while (true) {
if (sc.hasNext()) {
try {
keyboardInput.write(sc.nextLine());
} catch (IOException e) {
System.out.println("Error while capturing keyboard bytes stream.");
e.printStackTrace();
}
}
}
notepad++ 可以很好地打开,但是当我回到 javaFX 活动窗口并尝试输入一些键盘键时,进程会冻结。我想我应该将键重定向为字节而不是文本,但是我应该使用哪些类将键盘键重定向到 java 进程对象?
编辑:我真正想知道的是,是否可以使用子进程标准输入将键盘事件数据(如 KeyCode 整数)发送到子进程 java(如 notepad++)。
如果是,使用哪个 java 库?
解决方案
推荐阅读
- c++ - 如何使用 Qt 应用程序将 Id 添加到 kml 文件中的“QDomElement”标签
- javascript - 在 API 中发送分页值时遇到问题
- azure - Locust - 更改工作人员名称(而不是主机名)?
- spring-boot - 如何在 Spring boot build-image maven 插件生成的 docker 镜像上设置编码
- python - 在以自动返回所有分类变量的计数图为目标的 for 循环中,您将如何仅过滤 cat 列的数据?
- java - Java 游戏开发 - 资产在屏幕边缘被切断?
- python-3.x - 使用 NLP 方法对医学转录进行 ASR 纠错
- python - 在熊猫数据框中将整数转换为日期时间
- shell - 直接拉取 Bitbucket Repo 是成功的。通过管道完成时失败
- java - 获取视频文件的分辨率