【问题标题】:How can I detect from a Swing app that the PC is being shut-down?如何从 Swing 应用程序中检测到 PC 正在关闭?
【发布时间】:2010-09-09 11:13:22
【问题描述】:

运行良好的 Windows 程序需要允许用户在关闭 PC 时保存他们的工作。

如何让我的应用检测到关机事件?如果用户选择“取消”,任何解决方案都应允许用户中止关机。

普通的 Swing 窗口关闭钩子不起作用,添加关闭钩子也不起作用。

在测试时,不会调用 WindowListener 的方法(windowClosing、windowClosed 等)。

我接受的答案需要使用特定于平台的代码(JNI 注册 WM_QUERYENDSESSION )。这不是 Swing 的错误吗?

http://forums.sun.com/thread.jspa?threadID=481807&messageID=2246870

【问题讨论】:

  • 你在使用 java.lang.runtime 的关闭钩子吗?

标签: java swing operating-system


【解决方案1】:

将一些 JNI 代码写入 WM_QUERYENDSESSION 消息。您可以从 MSDN 文档或通过谷歌搜索获得详细信息。

如果您不想为此编写太多 C++ 代码,我可以推荐 JNA 库 click here。这为您提供了一些不错的 C 代码 Java 抽象。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      以上似乎是更好的答案。

      我找不到任何关于检测窗口关闭事件的好信息。我想最好的方法是检测您的应用程序试图关闭的天气,使用窗口关闭事件等然后提出问题。

      http://www.javalobby.org/java/forums/t17933

      【讨论】:

        【解决方案4】:

        在 java 中寻找信号处理。当 Windows 关闭时,它会向应用程序发送一个信号,要求它终止很可能是一个 sigterm

        请参阅here 了解更多信息(我不是该网站的所有者)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-03-30
          • 1970-01-01
          • 2010-09-20
          • 1970-01-01
          • 2017-03-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多