Mit Programm PC herunterfahren

...komplette Frage anzeigen

6 Antworten

Ich hab dir mal schnell was zusammen geschrieben (für alle Schlaumeister: NEIN, ich will mit dem Code keinen Schönheitspreis gewinnen!)

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class Main extends JFrame {

static JTextField time = new JTextField();
static JButton but1 = new JButton("Herunterfahren");
static JButton but2 = new JButton("Stop");
static int countdown;
static int countdownReset;
static boolean stopp = false;

public static void main(String[] args) throws IOException {
    Main main = new Main();
}

public Main() {
    super("Shutdown");

    time.setFont(new Font("SansSerif", Font.BOLD, 20));
    time.setMargin(new Insets(5, 2, 5, 2));
    time.setPreferredSize(new Dimension(65, 30));
    time.setText(String.valueOf(10000));
    but2.setEnabled(false);
    setResizable(false);

    but1.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            starten();
        }
    });

    but2.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            stopp();
        }
    });

    setLayout(new FlowLayout());

    add(time);
    add(but1);
    add(but2);

    setSize(300, 80);
    centreWindow(Main.this);
    setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

    addWindowListener(
            new WindowAdapter() {

                @Override
                public void windowClosing(WindowEvent we) {
                    if (!stopp) {
                        stopp();
                    }
                    System.exit(0);
                }
            });

    setVisible(true);

}

public static int testNumber(String str) {
    try {
        return Integer.parseInt(str);
    } catch (NumberFormatException e) {
        return -1;
    }
}

public static void centreWindow(Window frame) {
    Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (int) ((dimension.getWidth() - frame.getWidth()) / 2);
    int y = (int) ((dimension.getHeight() - frame.getHeight()) / 2);
    frame.setLocation(x, y);
}

public static void starten() {
    countdown = testNumber(time.getText());
    countdownReset = countdown;
    if (countdown >= 0) {
        try {
            Runtime.getRuntime().exec("shutdown /s /t " + countdown + " /c \"Shutdown in " + countdown + " Sekunden\"");
            time.setEnabled(false);
            but1.setEnabled(false);
            but2.setEnabled(true);
            Thread th = new Thread() {

                @Override
                public void run() {
                    long millicount = countdown * 1000;
                    for (long i = millicount; i >= 0 && !stopp; i -= 1) {
                        try {
                            Thread.sleep(1000);
                            countdown--;
                            time.setText(String.valueOf(countdown));
                        } catch (InterruptedException e) {
                        }
                    }
                    stopp = false;
                    time.setText(String.valueOf(countdownReset));
                }
            };
            th.start();

        } catch (IOException ex) {
        }
    } else {
        String zahl = "";
        for (int i = 0; i < time.getText().length(); i++) {
            if (Character.isDigit(time.getText().charAt(i))) {
                zahl += time.getText().charAt(i);
            }
        }
        time.setText(zahl);
    }
}

public static void stopp() {
    try {
        Runtime.getRuntime().exec("shutdown /a");
        stopp = true;
        time.setEnabled(true);
        but1.setEnabled(true);
        but2.setEnabled(false);
    } catch (IOException ex) {
    }
}
}

Und hier für alle die zu faul zum Kompilieren: http://netload.in/datei8R5iocApt5/JavaShutdown.jar.htm

Es gibt einen Betriebssystemaufruf zum Runterfahren, und den kannst du wohl auch aus java absetzen (Details findest du mit Sicherheit durch Google, such nach "shutdown dll"). Fertige Sleeptimer gibt's auch wie sand am meer.

Mit Java direkt geht das überhaupt nicht. Du kannst aber das Kommando "shutdown" aufrufen.

Naja... mehr als googlen könnte ich nicht vorschlagen. allerdings kannst du dir das selbst coden.Natürlich musst du dafür aber erstmal kenntnisse besitzen.Ich würde dir raten erstmal zu lernen, und dann so etwas zu programmieren. ansonsten mach in einfach per hand aus.

Ja selber programmieren oder für Windows das kostenlose Programm Poweroff holen.

Was möchtest Du wissen?