从Java睡眠Windows

时间:2009-09-02 17:35:43

标签: java windows sleep standby

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

6 个答案:

答案 0 :(得分:9)

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

Runtime.getRuntime().exec("Rundll32.exe powrprof.dll,SetSuspendState Sleep");

显示该命令和其他命令here

答案 1 :(得分:6)

任何人都建议使用rundll32,很少有函数被设计为由rundll32调用,而SetSuspendState是其中之一。您将获得随机行为(Hibernate vs Standby和Forced vs not forced等)请参阅this blog entry for more details

答案 2 :(得分: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");
  }
}

将其称为“WindowsSuspend.SetSuspendState(false, false, false)”。

答案 3 :(得分:0)

没有。您需要通过Runtime.exec()执行单独的二进制文件。

This article建议

rundll32 Powrprof.dll,SetSuspendState 

但我没试过。

答案 4 :(得分:0)

您可能需要查看OnNow / ACPI支持here

还有一篇旧的SO帖子谈论它here. 可能与你想要的相反。可能会给你一些线索。

答案 5 :(得分:0)

稍微复杂一点的方法,但是您可以使用import Font from '@ckeditor/ckeditor5-font/src/font'; 来制作Shell脚本(import FontSize from '@ckeditor/ckeditor5-font/src/fontsize'; ProcessBuilder)并执行它。