1

所以我正在创建一个 Java 程序,我想制作它,以便您可以要求它打开一个程序。但是,这里有个问题,我希望它打开的程序从用户输入中获取,现在我正在尝试改变这个

try{Process p = Runtime.getRuntime().exec("notepad.exe");}
catch(Exception e1){}

进入打开您要求它打开的程序的东西。

这是我想要的一个例子:

用户:你能打开 chrome 吗?程序:当然,给你! 铬打开

谁能告诉我我怎么能做到这一点?

4

3 回答 3

2

你可以通过两种方式做到这一点:

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(...) 采用单个字符串并将其直接传递给 shell 或 cmd.exe 进程。另一方面,ProcessBuilder 构造函数采用可变参数数组或字符串列表,其中数组或列表中的每个字符串都被假定为一个单独的参数。

因此,Runtime.getRuntime.exec() 会将 C:\application.exe -arg1 -arg2 行传递给 cmd.exe,它使用两个给定的参数运行 application.exe 程序。但是,ProcessBuilder 方法会失败,除非在 C: 中恰好有一个名为 application.exe -arg1 -arg2 的程序。

于 2014-02-10T16:49:20.293 回答
1

你可以用like试试。通过安装 chrome 的整个路径。

try{
        Process p = Runtime.getRuntime().exec("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe");
        }
    catch(Exception e1){

    }
于 2014-02-10T16:24:24.280 回答
1

使用 exec 时,它与在 windows 上使用命令行基本相同。打开命令提示符,键入 open,看看它是否提供了有关如何打开文件的详细信息。如果没有,找到开瓶器。通常在处理命令行操作时,打开文件/应用程序需要多个参数。例如,在 Mac 上打开“TextEdit.app”应用程序。

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 机器,但这只是为了展示如何使用命令行操作来打开文件和应用程序。不过,它应该与 Windows 类似。

希望这可以帮助

于 2014-02-10T16:47:47.063 回答