Мне нужно запустить 1-3 внешних программы в моем приложении Java, которые имеют пути, определенные пользователем. У меня мало требований:
-
Я не хочу, чтобы программа выполнялась, если она уже запущена
-
Я не хочу, чтобы какая-либо из программ, чтобы украсть фокус с моего приложения Java
-
Мне все равно, если кто-то из них не начнет или нет. Им просто нужно терпеть неудачу тихо.
Вот что я придумал до сих пор:
ProcessBuilder pb = new ProcessBuilder(userDefinedPath1);
try {
pb.start();
}
catch (Exception e) {
// Something went wrong, just ignore
}
И затем я повторяю это еще 3 раза с двумя другими путями. Это начинается, как я ожидал, и удовлетворяет моему третьему требованию просто отлично, но терпит неудачу в первых двух.
Каков наилучший способ сделать это?
Edit:
-
У меня нет контроля над этими другими приложениями. Они являются третьими лицами. Кроме того, они могли быть запущены или остановлены пользователем вручную в любое время.
-
Я знаю точные имена исполняемых файлов (например, "blah.exe" ), и они всегда будут одинаковыми, но пути к исполняемым файлам не обязательно будут.
-
Обертки пакетного файла здесь не возможны.
-
Другие приложения - это не java-приложения, а просто старые исполняемые файлы Windows.