如何使用Java中的Robot打开Microsoft Edge


import java.awt.AWTException;
import java.awt.Robot;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class RickRoll {
public static void main(String[] args) throws AWTException, IOException, InterruptedException {

//create Robot
Robot robot = new Robot();
//runtime to open Microsoft Edge
Runtime runtime = Runtime.getRuntime();
String command = "msedge.exe";

下面的内容应该运行msedge

runtime.exec(command);
try {
Thread.sleep(2000);
}
catch (InterruptedException e){

e.printStackTrace();
}
robot.delay(1000);
}

}

我不明白为什么我总是得到一个错误,而不是运行msedge。我做错了什么?

您需要使用cmd来运行它。因此:

//runtime to open Microsoft Edge
Runtime runtime = Runtime.getRuntime();
String command = "cmd.exe /C start microsoft-edge:http://www.google.com";
runtime.exec(command);

您有几个选项,包括使用类java.lang.Runtime,但我认为这是最不推荐的。

正如@CharlieArmstrong在评论中提到的,您需要执行文件msedge.exe。如果PATH环境变量中包含该文件的文件夹是而不是,则需要提供该文件的完整路径。您可以使用类java.lang.ProcessBuilder来执行该文件。

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main {
public static void main(String[] args) {
Path path = Paths.get("C:",
"Program Files (x86)",
"Microsoft",
"Edge",
"Application",
"msedge.exe");
ProcessBuilder pb = new ProcessBuilder(path.toString());
try {
pb.start();
}
catch (IOException x) {
x.printStackTrace();
}
}
}

上面的代码将在Edge的主页上打开。如果您想打开一个特定的网页,只需添加URL即可。

public static void main(String[] args) {
Path path = Paths.get("C:",
"Program Files (x86)",
"Microsoft",
"Edge",
"Application",
"msedge.exe");
ProcessBuilder pb = new ProcessBuilder(path.toString(), "http://www.facebook.com");
try {
pb.start();
}
catch (IOException x) {
x.printStackTrace();
}
}

或者,您可以使用类java.awt.Desktop。如果您只想启动Edge,请使用方法open。同样,如果Edge不在您的PATH上,那么您需要提供完整的路径。

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class DesktopT {
public static void main(String[] args) {
if (Desktop.isDesktopSupported()) {
Path path = Paths.get("C:",
"Program Files (x86)",
"Microsoft",
"Edge",
"Application",
"msedge.exe");
File f = path.toFile();
try {
Desktop desktop = Desktop.getDesktop();
desktop.open(f);
}
catch (IOException x) {
x.printStackTrace();
}
}
}
}

如果要打开特定的网页,请使用方法browse
(请注意,方法browse将使用默认的Web浏览器,该浏览器可能不一定是Edge。(

public static void main(String[] args) {
if (Desktop.isDesktopSupported()) {
try {
URI uri = new URI("https://www.yahoo.com");
Desktop desktop = Desktop.getDesktop();
desktop.browse(uri);
}
catch (URISyntaxException | IOException x) {
x.printStackTrace();
}
}
}

请注意,以上所有代码都是在Windows10上使用JDK17.0.2运行的。运行时,Java代码启动Edge并终止。但是,类Desktop还启动事件调度线程(EDT(,如果您使用的是早期JDK版本,则该线程可能不会终止。如果是这种情况,那么您可以添加以下内容作为方法main中的最后一行。

java.lang.System.exit(0);

这一行将终止JVM。

最新更新