首页 > 解决方案 > 使用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 库?

标签: javajavafxprocessstdin

解决方案


推荐阅读