Запустите внешнее приложение по userinput
Итак, я создаю программу на Java и хочу, чтобы вы могли попросить ее открыть программу. Но, вот в чем подвох, я хочу, чтобы программа, которую она открывает, была взята из пользовательского ввода, сейчас я пытаюсь изменить это
try{Process p = Runtime.getRuntime().exec("notepad.exe");}
catch(Exception e1){}
Во что-то, что открывает программу, которую вы попросили открыть.
Вот пример того, что я хочу:
Пользователь: Можете ли вы открыть Chrome? Программа: Конечно, вот, пожалуйста! хром открывается
Может ли кто-нибудь сказать мне, как я смогу сделать это?
3 ответа
Вы можете сделать это двумя способами:
1. При использовании среды выполнения: Runtime.getRuntime (). Exec(...)
Так, например, в Windows,
Runtime.getRuntime().exec("C:\application.exe -arg1 -arg2");
2. Используя ProcessBuilder:
ProcessBuilder b = new ProcessBuilder("C:\application.exe", "-arg1", "-arg2");
или в качестве альтернативы
List<String> params = java.util.Arrays.asList("C:\application.exe", "-arg1", "-arg2");
ProcessBuilder b = new ProcessBuilder(params);
или же
ProcessBuilder b = new ProcessBuilder("C:\application.exe -arg1 -arg2");
Разница между ними заключается в следующем:
Runtime.getRuntime (). Exec(...) принимает одну строку и передает ее непосредственно процессу оболочки или cmd.exe. С другой стороны, конструкторы ProcessBuilder принимают массив строк varargs или список строк, где каждая строка в массиве или списке считается отдельным аргументом.
Таким образом,Runtime.getRuntime.exec() передаст строку C:\application.exe -arg1 -arg2 в cmd.exe, который запускает программу application.exe с двумя заданными аргументами. Однако метод ProcessBuilder завершится сбоем, если только не будет программы с именем application.exe -arg1 -arg2 в C:.
При использовании exec, это по сути так же, как если бы вы использовали командную строку в Windows. Откройте командную строку, введите open и посмотрите, дает ли он подробности о том, как он открывает файлы. Если нет, найдите нож. Обычно при работе с операциями командной строки для открытия файлов / приложений требуется несколько параметров. Примером этого может быть открытие приложения "TextEdit.app" на Mac.
Process p = Runtime.getRuntime().exec("open -a TextEdit.app");
Терминал (для Mac) откроет приложение, используя флаг -a, что означает "приложение". Вы можете открыть файл, выполнив:
Process p = Runtime.getRuntime().exec("open filename.file_ext -a TextEdit.app");
Второй скажет компьютеру найти приложение с именем <app_name>.app
и открой файл filename.file_ext
Я знаю, что это не будет работать на машине с Windows, но это только для того, чтобы показать, как использовать операции командной строки для открытия файлов и приложений. Это должно быть похоже на окна, хотя.
Надеюсь это поможет
Вы можете попробовать это с лайком. Пройдите весь путь, где вы устанавливаете Chrome.
try{
Process p = Runtime.getRuntime().exec("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe");
}
catch(Exception e1){
}