Вы можете периодически проверять, продолжает ли процесс, используя код от this answer, а затем опубликовать сообщение, когда процесс отсутствует. В Windows 10 процесс, который вы ищете, - Calculator.exe
.
Вот Java 8 способ проверить, если процесс запущен:
private static boolean processIsRunning(String processName) throws IOException {
String taskList = System.getenv("windir") + "\\system32\\tasklist.exe";
InputStream is = Runtime.getRuntime().exec(taskList).getInputStream();
try (BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
return br
.lines()
.anyMatch(line -> line.contains(processName));
}
}
И тогда вы можете ждать processIsRunning("Calculator.exe")
, чтобы быть правдой.
Вот быстрая и грязная реализация, что:
public static void main(String[] args) throws Exception {
Runtime.getRuntime().exec("calc.exe").waitFor();
while (processIsRunning("Calculator.exe")) {
Thread.sleep(1000); // make this smaller if you want
}
System.out.println("Program has been closed successfully");
}
'calc.exe', вероятно, просто инициализации приложения в отдельном потоке, а затем завершает свою работу. Он не возвращает дескриптор потока, который он создает, поэтому вы не можете обнаружить закрытие окна. – 4castle
Возможно, [этот вопрос] (http://stackoverflow.com/q/54686/5743988) поможет вам обнаружить, когда окно закрывается. – 4castle
Можете ли вы добавить дополнительную информацию о своей среде? Я могу воспроизвести проблему, но Ришал дев сингх не мог. Моя среда - это Windows 10 Home v. 1151, с Java 1.8.0.910 – 4castle