Действительно ли возможно завершить работу Windows программно с Java?
Удачи
String shutdownCmd = "shutdown -s"
Process child = Runtime.getRuntime().exec(shutdownCmd);
Дополнительная информация о команде выключения для вашего удовольствия от просмотра
Некоторые другие параметры командной строки, которые могут иметь Вас интересуют
-i Отображение графического интерфейса пользователя, должна быть первая опция
-l Выход из системы (не может использоваться с параметром -m)
-r Завершение работы и перезагрузка компьютера
-m \ computername (удаленный компьютер для выключения / перезапуска / прерывания)
-t xx Установить тайм-аут для выключения на xx секунд
-c "comment" Комментарий выключения (максимум 127 символов)
Конечно, если вы предпочитаете не делайте этого, вы можете скачать библиотеки для этого. Одним из примеров этого могут быть Java-функции завершения работы Windows .
Согласно их странице SourceForge:
JWSF - Java API функций завершения работы Windows позволяет Java-приложениям выполнять следующие операции в большинстве операционных систем Windows: завершение работы, перезапуск, выход из системы, блокировка рабочей станции. JWSF выполняет собственные вызовы с использованием JNI. JWSF подчиняется лицензии LGPL
Выполните команду "shutdown -s".
Изменить: Примерно так:
Process p = Runtime.getRuntime().exec("shutdown -s");
Это также можно сделать с помощью WMI, например, через JACOB:
import java.util.Enumeration;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.EnumVariant;
import com.jacob.com.Variant;
public abstract class Shutdown {
public static void main(String[] args) {
ComThread.InitMTA();
try {
ActiveXComponent wmi = new ActiveXComponent("winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\\\\.");
Variant instances = wmi.invoke("InstancesOf", "Win32_OperatingSystem");
Enumeration<Variant> en = new EnumVariant(instances.getDispatch());
ActiveXComponent os =
new ActiveXComponent(en.nextElement().getDispatch());
os.invoke("Win32Shutdown", 1, 0);
} finally {
ComThread.Release();
}
}
}