通过用户输入运行外部应用



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

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

进入打开您要求它打开的程序的内容。

这是我想要的示例:

用户:你能打开铬吗? 程序:当然,你来了! 镀铬打开

谁能告诉我我该怎么做?

您可以通过两种方式执行此操作:

1.By 使用运行时:Runtime.getRuntime().exec(...)

因此,例如,在Windows上,

Runtime.getRuntime().exec("C:application.exe -arg1 -arg2");

2.By 使用 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 构造函数采用字符串的 varargs 数组或字符串列表,其中数组或列表中的每个字符串都假定为一个单独的参数。

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

你可以试试喜欢。传递安装镶边的整个路径。

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

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

希望这有帮助

最新更新