从Java睡眠Windows

Ham*_*aya 2 java windows sleep standby

是否有命令在java上使用Windows来让计算机进入睡眠状态?

Jhe*_*ico 9

如果java app有足够的权限,您可以通过执行shell命令来执行此操作.命令是......

Runtime.getRuntime().exec("Rundll32.exe powrprof.dll,SetSuspendState Sleep");
Run Code Online (Sandbox Code Playgroud)

这和其他命令在这里显示.


And*_*ers 6

有人建议使用rundll32,很少有函数被设计为由rundll32调用,而SetSuspendState 不是其中之一.您将获得随机行为(Hibernate vs Standby和Forced vs not forced等)有关详细信息,请参阅此博客条目.


小智 6

我目前使用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");
  }
}
Run Code Online (Sandbox Code Playgroud)

称之为WindowsSuspend.SetSuspendState(false, false, false).