2011-02-14 2 views
2

문제점 : 일정 시간이 지나면 자동으로 프로그램을 닫습니다.Java로 외부 프로그램을 시작 하시겠습니까?

솔루션 : 여기 나는 내 문제를 해결하기 위해 함께 온 것입니다 (우분투 리듬와 함께 작동) :

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

난 당신이 라디오 방송국을 설정할 수있는 방법을 단서가 없다 (이 사이트를 검색, 다수의 마지막 날 ProcessBuilder를에 관한 질문이 있었다). 하지만 나는 미디어 플레이어를 여는 방법을 알려줄 수 있다고 생각합니다 : 박쥐 파일을 한 번 호출하여 내 IP 주소를 갱신하면 나에게 잘 돌아갔습니다. .bat를 호출하면 Java에 관해 잊어 버리고 플레이어를 시작하여 거기에서 매개 변수를 보내려고 할 수 있습니다.

자바는 박쥐를 호출하는 방법입니다 :

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

이이를 더 많거나 적은 .BAT 구현해야 다음과 같습니다

시작 "" "% PROGRAMFILES % \ Windows Media Player에서 \ wmplayer.exe "

이제는 기본적으로 원하는 방송국에서 시작되도록 미디어 플레이어를 설정하는 방법 만 알아야합니다.

+0

그냥 텍스트 파일을 여는 것을 의미한다고 가정하면 해당 명령을 입력하고 bat 파일로 저장 한 다음 Java 프로그램에서 사용하십시오. 나는 열어 보려고 노력하는 대신에 간단히 열 수 있기 때문에 좀 더 집중해야한다고 생각합니다. x 분 후에 프로세스를 종료하면됩니다. 일식이 .exec()의 역 연산을 제공하는지 아니면 API를 간단히 살펴볼지를 알 수 있습니다. 여러분의 제안에 감사드립니다! –

3

당신은 아마 그런 식으로 EXE 파일을 시작할 수 없습니다. 나는 그것이 당신이 직접 또는 Windows 보안으로 실행중인 응용 프로그램을 실행하는 대신 기본 응용 프로그램을 사용하여 파일을 열려고했다 생각합니다.

Java.lang.Process를 사용하여 인수가있는 프로그램을 실행할 수 있습니다.

0

실행 파일을 실행하기위한 Desktop.open()이 아닙니다. '데이터 파일'(예 : mysong.mp3 또는 myvideo.avi)을 입력하기 만하면 시스템의 기본 연결로 해당 파일이 열립니다. 당신이 .exe 인이 ProcessBuilder를을 사용하여 실행하려면

관련 문제