Запустите внешнее приложение по 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){

    }
Другие вопросы по тегам