我有一个简单的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库?