У меня есть инструменты с пользовательскими интерфейсами на Java.Если я нажимаю на кнопку, я хочу запустить приложение.exe в моих инструментах, у меня есть консоль, куда я хочу вывести вывод (консоль) .exe.Для этого я сделал так:
Runtime run = Runtime.getRuntime();
StyledDocument doc = txtResult.getStyledDocument();
SimpleAttributeSet keyWord = new SimpleAttributeSet();
StyleConstants.setForeground(keyWord, Color.RED);
try {
Process pp=run.exec(PATHEXE);
BufferedReader in =new BufferedReader(new InputStreamReader(pp.getInputStream()));
BufferedReader inErr =new BufferedReader(new InputStreamReader(pp.getErrorStream()));
String line = null;
String lineErr = null;
while (((line = in.readLine()) != null) ||(lineErr = inErr.readLine()) != null) {
if(line != null)
doc.insertString(doc.getLength(), line+"\n", null );
if(lineErr != null)
doc.insertString(doc.getLength(), lineErr+"\n", keyWord );
}
int exitVal = pp.waitFor();
System.out.println("Process exitValue: " + exitVal);
btRun.setEnabled(true);
} catch (Exception e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
Все работает, но у меня все еще есть некоторые проблемы:
- Я хотел бы перенести выполнение.exe в другом потоке, чтобы освободить интерфейс пользователя во время выполнения .exe.
- Чтение выходного .exe в моем инструменте только в конце ... затем запустите обновление, которое я получаю привремя?