Перенаправить ввод с клавиатуры на другой процесс, используя Java - PullRequest
0 голосов
/ 01 октября 2018

У меня есть простое приложение javaFX, использующее файлы fxml с SceneBuilder.Сейчас я пытаюсь запустить процесс 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 ++) с помощью подпроцесса stdin.

Если да, то какие библиотеки Java следует использовать?

...