Сведения о вопросе

Ислам

10:31, 15th August, 2020

Теги

Выключение компьютера

Просмотров: 477   Ответов: 9

Есть ли способ выключить компьютер с помощью встроенного метода Java?



  Сведения об ответе

crush

04:19, 12th August, 2020

Создайте свою собственную функцию для выполнения команды OS через командную строку ?

Просто ради примера. Но знайте, где и почему вы хотите использовать это, как другие отмечают.

public static void main(String arg[]) throws IOException{
    Runtime runtime = Runtime.getRuntime();
    Process proc = runtime.exec("shutdown -s -t 0");
    System.exit(0);
}


  Сведения об ответе

baggs

07:21, 13th August, 2020

Вот еще один пример, который может работать кросс-платформенно:

public static void shutdown() throws RuntimeException, IOException {
    String shutdownCommand;
    String operatingSystem = System.getProperty("os.name");

    if ("Linux".equals(operatingSystem) || "Mac OS X".equals(operatingSystem)) {
        shutdownCommand = "shutdown -h now";
    }
    else if ("Windows".equals(operatingSystem)) {
        shutdownCommand = "shutdown.exe -s -t 0";
    }
    else {
        throw new RuntimeException("Unsupported operating system.");
    }

    Runtime.getRuntime().exec(shutdownCommand);
    System.exit(0);
}

Для выполнения конкретных команд завершения работы могут потребоваться различные пути или права администратора.


  Сведения об ответе

baggs

12:49, 28th August, 2020

Вот пример использования Apache Commons Lang's SystemUtils :

public static boolean shutdown(int time) throws IOException {
    String shutdownCommand = null, t = time == 0 ? "now" : String.valueOf(time);

    if(SystemUtils.IS_OS_AIX)
        shutdownCommand = "shutdown -Fh " + t;
    else if(SystemUtils.IS_OS_FREE_BSD || SystemUtils.IS_OS_LINUX || SystemUtils.IS_OS_MAC|| SystemUtils.IS_OS_MAC_OSX || SystemUtils.IS_OS_NET_BSD || SystemUtils.IS_OS_OPEN_BSD || SystemUtils.IS_OS_UNIX)
        shutdownCommand = "shutdown -h " + t;
    else if(SystemUtils.IS_OS_HP_UX)
        shutdownCommand = "shutdown -hy " + t;
    else if(SystemUtils.IS_OS_IRIX)
        shutdownCommand = "shutdown -y -g " + t;
    else if(SystemUtils.IS_OS_SOLARIS || SystemUtils.IS_OS_SUN_OS)
        shutdownCommand = "shutdown -y -i5 -g" + t;
    else if(SystemUtils.IS_OS_WINDOWS)
        shutdownCommand = "shutdown.exe /s /t " + t;
    else
        return false;

    Runtime.getRuntime().exec(shutdownCommand);
    return true;
}

Этот метод учитывает намного больше операционных систем, чем любой из приведенных выше ответов. Он также выглядит намного лучше и надежнее, чем проверка свойства os.name .

Edit: поддерживает задержку и все версии Windows (inc. 8/10).


  Сведения об ответе

baggs

15:50, 26th August, 2020

Быстрый ответ-нет. Единственный способ сделать это-вызвать специальные команды OS, которые приведут к выключению компьютера, предполагая, что ваше приложение имеет необходимые права для этого. Это по своей сути непереносимо, поэтому вам нужно либо знать, где будет выполняться ваше приложение, либо иметь разные методы для разных OSs и определять, какой из них использовать.


  Сведения об ответе

SSESION

14:38, 7th August, 2020

Я использую эту программу для выключения компьютера в течение X минут.

   public class Shutdown {
    public static void main(String[] args) {

        int minutes = Integer.valueOf(args[0]);
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {

            @Override
            public void run() {
                ProcessBuilder processBuilder = new ProcessBuilder("shutdown",
                        "/s");
                try {
                    processBuilder.start();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }

        }, minutes * 60 * 1000);

        System.out.println(" Shutting down in " + minutes + " minutes");
    }
 }


  Сведения об ответе

COOL

20:16, 4th August, 2020

Лучше использовать .startsWith, чем .equals ...

String osName = System.getProperty("os.name");        
if (osName.startsWith("Win")) {
  shutdownCommand = "shutdown.exe -s -t 0";
} else if (osName.startsWith("Linux") || osName.startsWith("Mac")) {
  shutdownCommand = "shutdown -h now";
} else {
  System.err.println("Shutdown unsupported operating system ...");
    //closeApp();
}

работать отлично

Ра.


  Сведения об ответе

ASER

10:16, 21st August, 2020

Вы можете использовать JNI , чтобы сделать это так, как вы сделали бы это с C/C++.


  Сведения об ответе

SKY

09:39, 3rd August, 2020

На Windows Embedded по умолчанию нет команды shutdown в cmd. В таком случае вам нужно добавить эту команду вручную или использовать функцию ExitWindowsEx из win32 (user32.lib) с помощью JNA (если вы хотите больше Java) или JNI (если вам проще будет установить привилегии в коде C).


  Сведения об ответе

ITSME

07:53, 27th August, 2020

простой одну строку

Runtime.getRuntime().exec("shutdown -s -t 0");

но только работа на windows


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться