我应该如何关闭使用Java代码打开浏览器窗口。我已经找到一种方法先找到过程然后结束该进程。有没有更好的办法?我已经打开最初使用下面的代码浏览器。我在CentOS的工作。
String url = "http://192.168.40.174/test15.html";
Runtime runtime = Runtime.getRuntime();
runtime.exec("/usr/bin/firefox -new-window " + url);
你可以把它放在一个Process
并杀死。
Runtime runtime = Runtime.getRuntime();
Process p = runtime.exec("/usr/bin/firefox -new-window " + url);
p.destroy();
- 更新 -
你应该有一个String数组,执行你的命令
Process p = Runtime.getRuntime().exec(new String[]{
"/usr/bin/firefox",
"-new-window", url
});
这是不易出错:Java execute a command with a space in the pathname
或者使用ProcessBuilder
:ProcessBuilder Documentation
我试图实现类似的事情,而不关心太多,其浏览器将打开。我来进行的跨基于Java FX解决方案:
public class MyBrowser extends Application {
private String url = "http://stackoverflow.com/questions/29842930/close-browser-window-using-java-code";
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
WebView webview = new WebView();
webview.getEngine().load(url);
webview.setPrefSize(1800, 1000);
stage.setScene(new Scene(webview));
stage.show();
//stage.close();
}
}
当然,如果你调用close()
这样一来,你就不会真正看到了嵌入式浏览器窗口。它应在的代码的另一部分被调用,例如响应于按钮按压。
运行Firefox
我通过调用Runtime.getRuntime使用Firefox()。我使用专用窗口,虽然,所以我的命令如下:
Process p = Runtime.getRuntime().exec("firefox --private-window");
杀火狐 - 当然你也可以杀的过程中,通过例如:
p.destroy();
要么
Runtime.getRuntime().exec("killall firefox");
我不喜欢,虽然这些解决方案,因为不时它会导致我的电脑上FF的问题。因此,要正常关闭FF我决定送CTRL + Q键盘组合。
请注意,如果您的FF窗口为活动窗口,这将工作!
public static void ctrlAndQ()
{
try
{
robot = new Robot();
}
catch (AWTException e)
{
e.printStackTrace();
}
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_Q);
robot.keyRelease(KeyEvent.VK_Q);
robot.keyRelease(KeyEvent.VK_CONTROL);
}