使用Java将键盘输入重定向到其他进程

时间:2018-10-01 18:47:05

标签: java javafx process stdin

我有一个简单的javaFX应用程序,将fxml文件与SceneBuilder一起使用。现在,我正在尝试从Java启动notepad++进程,然后将键盘输入从当前活动视图重定向到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进程对象?

编辑:我真正想知道的是,是否可以使用子进程stdin将键盘事件数据(例如KeyCode整数)发送到子进程Java(例如notepad ++)。

如果是,则使用哪个Java库?

0 个答案:

没有答案