2011-02-14 84 views
2

問題:在一定的時間過後自動關閉程序。用Java啓動外部程序?

解決方案:這裏是我想出瞭解決我的問題(與工作的Rhythmbox在Ubuntu):

package rhythmBox; 

import java.awt.Container; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.IOException; 
import java.util.concurrent.TimeUnit; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class closeRhythmBox extends JFrame implements ActionListener { 

private static final long serialVersionUID = 1L; 
private static final int WIDTH = 400; 
private static final int HEIGHT = 300; 
private JTextField minutesBox; 

public static void main(String[] args) { 
    new closeRhythmBox().setVisible(true); 
} 

public static void execKill(long minutes) throws InterruptedException { 
    Thread.sleep(minutes*60*1000); 
    try{ 
    Runtime.getRuntime().exec("pkill rhythmbox"); 
    System.exit(0); 
     } 
    catch (IOException ioe) { 
      ioe.printStackTrace(); 
     } 
} 
public closeRhythmBox(){ 
    setTitle("Rythmbox Timer"); 
    setSize(WIDTH, HEIGHT); 
    setVisible(true); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    Container pane = getContentPane(); 
    pane.setLayout(new FlowLayout()); 

    JPanel box = new JPanel(); 
    box.setLayout(new FlowLayout()); 
    JButton startButton = new JButton("Start"); 
    startButton.addActionListener(this); 
    box.add(startButton); 
    box.add(new JLabel("Minutes Until Close")); 
    box.add(minutesBox = new JTextField(20)); 

    pane.add(box); 
    pack(); 

} 

public void actionPerformed(ActionEvent e) { 
    String textNum = minutesBox.getText(); 
    long minuteNum = Long.parseLong(textNum); 
    if (e.getActionCommand().equals("Start")){ 
     try { 
      execKill(minuteNum); 
     } catch (InterruptedException e1) { 
      e1.printStackTrace(); 
     } 
    } 
} 

}

回答

1

我不知道你怎麼能設置的無線電臺。但我想我可以告訴你如何打開媒體播放器: 我打電話給一個bat文件來更新我的ip地址,它對我來說工作得很好。如果你設法調用.bat,那麼你可以忘記java,並嘗試啓動播放器並從那裏給他發送參數。

這是用java應該如何調用蝙蝠:

Runtime.getRuntime().exec("cmd /c start file.bat"); 

這或多或少將.bat實現應該看起來像:

開始 「」 爲「%ProgramFiles%\ Windows媒體播放器\ wmplayer.exe「

現在,您只需要瞭解如何設置媒體播放器以默認啓動該電臺。

+0

假設你的意思是我只是打開一個文本文件,輸入該命令,將其保存爲bat文件,然後在我的Java程序中使用它?我想,不要試圖打開,我應該更關注CLOSING,因爲我可以簡單地打開我的自我。我只需要在x分鐘後終止這個過程。我會看看eclipse是否給了.exec()的逆操作,或者可能只是簡單的看一下API。感謝大家的建議! – 2011-02-14 20:19:11

3

你可能無法啓動一個EXE的方式。我認爲這是打算使用默認應用程序打開文件,而不是自己運行應用程序 - 無論是或者您只是在運行Windows安全性。

您可以使用Java.lang.Process來運行帶參數的程序。

0

Desktop.open()不用於運行可執行文件。您只需給它一個「數據文件」(例如mysong.mp3或myvideo.avi),然後它將使用系統的默認關聯打開該文件。

如果你想運行.exe使用的ProcessBuilder(搜索這個網站,已經有關於的ProcessBuilder最後的日子裏很多問題)

相關問題