【发布时间】:2010-06-04 11:28:09
【问题描述】:
是否可以使用 Java 以编程方式关闭 Windows?
干杯
【问题讨论】:
是否可以使用 Java 以编程方式关闭 Windows?
干杯
【问题讨论】:
String shutdownCmd = "shutdown -s";
Process child = Runtime.getRuntime().exec(shutdownCmd);
更多关于shutdown command的信息供您观赏
您可能感兴趣的其他一些命令行选项是
-i 显示GUI界面,必须是第一个选项
-l 注销(不能与 -m 选项一起使用)
-r 关闭并重新启动计算机
-m \computername(远程计算机关机/重启/中止)
-t xx 设置关机超时时间为 xx 秒
-c "comment" 关机注释(最多 127 个字符)
当然,如果您不想使用这种方法,可以下载一些库来实现这一点。 Java Windows Shutdown Functions 就是一个例子。
根据他们的 SourceForge 页面:
JWSF - Java Windows Shutdown Functions API 允许 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();
}
}
}
【讨论】:
如果你想在特定时间关闭它,附加 -t 参数(以秒为单位)。
五秒钟:
String shutdownCmd = "shutdown -s -t5";
【讨论】: