有没有在Java中使用的命令让Windows计算机进入睡眠状态?
如果您的Java应用程序有足够的权限,可以通过执行shell命令来实现。 命令是...
Runtime.getRuntime().exec("Rundll32.exe powrprof.dll,SetSuspendState Sleep");
您可以在这里找到该命令和其他命令的显示。
我目前使用https://github.com/twall/jna解决了这个问题。有关从http://www.pinvoke.net/default.aspx/powrprof.SetSuspendState调用的信息。
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class WindowsSuspend {
public static native boolean SetSuspendState(boolean hibernate, boolean forceCritical, boolean disableWakeEvent);
static {
if (Platform.isWindows())
Native.register("powrprof");
}
}
使用 WindowsSuspend.SetSuspendState(false, false, false)
函数可以实现此操作。
建议使用rundll32的人应该被开除,很少有函数是设计为由rundll32调用的,而SetSuspendState不是其中之一。你会得到随机的行为(休眠 vs 待机和强制 vs 非强制等),详见此博客文章。
ProcessBuilder
来创建一个shell脚本(.sh
或.bat
),然后执行它。