从 Java 睡眠 Windows

发布于 2024-08-04 03:08:06 字数 43 浏览 8 评论 0原文

java中有没有可以在windows上使用的命令来让计算机进入睡眠状态?

Is there command to use on windows from java to make the computer sleep?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

猥︴琐丶欲为 2024-08-11 03:08:06

如果您的 java 应用程序有足够的权限,您可以通过执行 shell 命令来完成此操作。该命令是...

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

该命令和其他命令显示在 此处

You can do it by executing a shell command, if you java app has enough rights to do so. The command is...

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

That and other commands are shown here.

柠檬色的秋千 2024-08-11 03:08:06

我目前使用 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)

I currently solved this using https://github.com/twall/jna. Information about the call from 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");
  }
}

Call it than with WindowsSuspend.SetSuspendState(false, false, false).

最偏执的依靠 2024-08-11 03:08:06

任何建议 rundll32 应该被枪杀的人,很少有函数被设计为由 rundll32 调用,而 SetSuspendState 不是其中之一。您将得到随机行为(休眠与待机、强制与非强制等)请参阅 此博客条目了解更多详细信息

Anyone suggesting rundll32 should be shot, very few functions are designed to be called by rundll32 and SetSuspendState is not one of them. You will get random behavior (Hibernate vs Standby and Forced vs not forced etc) See this blog entry for more details.

ㄖ落Θ余辉 2024-08-11 03:08:06

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

这篇文章建议

rundll32 Powrprof.dll,SetSuspendState 

但我还没有尝试过。

No. You'd need to execute a separate binary via Runtime.exec().

This article suggests

rundll32 Powrprof.dll,SetSuspendState 

but I've not tried it.

夏末的微笑 2024-08-11 03:08:06

您可能需要在此处查看 OnNow/ACPI 支持。

还有一篇旧的 SO 帖子讨论了它 这里。
可能与你想要的相反。不过可能会给你一些线索。

You may want to look at the OnNow/ACPI Support here.

There is also an old SO post that talks about it here.
Probably the reverse of what you want. Might give you some clues though.

瞎闹 2024-08-11 03:08:06

方法有点复杂,但您可以使用 ProcessBuilder 来制作 shell 脚本(.sh.bat)并执行它。

A bit more complicated method but you could use ProcessBuilder to make a shell script (.sh or .bat) and execute that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文