2015-04-24 7 views
1

Как закрыть открытое окно браузера с помощью java-кода. Я нашел способ сначала найти процесс, а затем завершить этот процесс. Есть ли лучший способ? Сначала я открыл браузер, используя приведенный ниже код. Я работаю в CentOS.Закрыть окно браузера с использованием кода Java

String url = "http://192.168.40.174/test15.html"; 
Runtime runtime = Runtime.getRuntime(); 
runtime.exec("/usr/bin/firefox -new-window " + url); 

ответ

0

Вы можете поместить его в Process и убить его.

Runtime runtime = Runtime.getRuntime(); 
Process p = runtime.exec("/usr/bin/firefox -new-window " + url); 
p.destroy(); 

- обновление -

Вы должны выполнить вашу команду с массивом Струнный

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

+2

Обратите внимание, что если пользователь откроет дополнительные окна в этом браузере, все окна будут уничтожены, а не только один. – RealSkeptic

+0

@Jelle ..tx для вашего ответа, но используя runtime, он требует много времени, чтобы открыть браузер, поэтому теперь я использую код belwo для открытия браузера. в этом случае, что может быть подходящим способом закрыть открытый браузер, кроме поиска процесса, а затем закрыть его. Любое предложение? Рабочий стол dt = Desktop.getDesktop(); //dt.browse (новый URI (url)); –

+0

@PinkGiraffe Не то, что я знаю. Может быть, вы должны выяснить, почему ваш «Runtime» действует медленно. –

0

Я пытался добиться подобной вещи, не заботясь о том, какой браузер откроется. Я встречу решение, основанное на 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() таким образом, вы не будете действительно увидеть внедренное окно браузера. Его следует вызывать в другой части кода, например. в ответ на нажатие кнопки.

Смежные вопросы