Question

Problème: Fermez automatiquement un programme après un certain nombre de minutes.

La solution: Voici ce que j'ai trouvé pour résoudre mon problème (fonctionne avec RhythMbox sur 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();
        }
    }
}   

}

Était-ce utile?

La solution

Je n'ai aucune idée de comment pourriez-vous définir la station de radio. Mais je pense que je peux vous dire comment ouvrir le lecteur multimédia: j'ai appelé un fichier BAT une fois pour renouveler mon adresse IP et cela a bien fonctionné pour moi. Si vous parvenez à appeler le .bat, vous pouvez oublier Java, et essayer de démarrer le joueur et de lui envoyer les paramètres à partir de là.

C'est ainsi que Java devrait appeler le .bat:

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

C'est plus ou moins l'implémentation .bat devrait ressembler:

Démarrer "" "% ProgramFiles% Windows Media Player wmplayer.exe"

Maintenant, il vous suffit de découvrir comment définir le lecteur multimédia pour démarrer dans cette station que vous souhaitez, par défaut.

Autres conseils

Vous ne pouvez probablement pas lancer un EXE de cette façon. Je pense que cela était destiné à ouvrir un fichier en utilisant l'application par défaut plutôt que d'exécuter une application vous-même - soit cela, soit vous rencontrez simplement Windows Security.

Vous pouvez utiliser le java.lang.process pour exécuter un programme avec des arguments.

Desktop.Open () n'est pas destiné à exécuter des exécutables. Vous venez de lui donner un "fichier de données" (par exemple mysong.mp3, ou myvideo.avi) et il ouvrira ensuite ce fichier avec l'association par défaut du système.

Si vous souhaitez exécuter un .exe Utilisez un ProcessBuilder (recherchez ce site, il y a eu de nombreuses questions concernant le Buildbuilder ces derniers jours)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top