【问题标题】:How to abort Windows shutdown in a Swing application?如何在 Swing 应用程序中中止 Windows 关闭?
【发布时间】:2010-01-16 10:35:04
【问题描述】:

我有一个 Swing 应用程序,我想在应用程序在 Windows 关机时关闭之前向用户显示一个确认框,如果用户选择取消,关机过程应该中止。

我在论坛中进行了几次讨论,但无法得到具体答案。如果有人成功实现了这个要求,请指导我实现同样的要求。

【问题讨论】:

  • 听起来很棘手,因为关闭信号会发送到 JVM,这必须使其对运行在该 VM 上的线程可用...

标签: java swing


【解决方案1】:

This question 讨论了如何使用 Win32 API 以编程方式取消 Windows 关机,并给出了一个非常简单的答案。也许......您需要做的就是编写一些 JNI / JNA 代码,然后您可以在 Java 中做同样的事情。

【讨论】:

  • 根据personalmicrocosms.com/pages/blog.aspx?b=64 它适用于 SWT/JFace。不同的技术,但开源并着眼于 SWT/JFace 可能有助于实现与普通 Java 或 Swing 使用类似的东西。
  • 更复杂一点:看起来如果 JVM 从控制台启动(使用 cmd.exe 或从批处理文件),则关闭事件被发送到控制台而不是 JVM ...所以一定要使用 ms dos start 命令来运行 JVM
【解决方案2】:

在按钮的事件监听器中加入这一行,

Runtime.getRuntime().exec("shutdown -a");

【讨论】:

  • 是的,但真正的问题是从 Swing“应用程序”(线程)捕获 Windows 关闭事件
  • 看清楚问题行,“如果用户选择取消,关机过程应该中止。”他可以使用我给出的代码来中止关机,尽管我没有给出代码来捕获关闭系统的事件。我给出的不是一个完整的解决方案,尽管他可以使用这种技术......我说得对吗>?
  • 您有任何工作示例可以识别是否已触发关闭事件吗?
  • 这个问题有两个要求。 1.当我的swing应用程序正在运行并且用户尝试关闭时,swing应用程序应该能够捕捉到窗口关闭事件。这个怎么做? 2. 第二部分是当应用程序成功捕获窗口关闭事件时。在这种情况下,用户将看到一个对话框来继续或取消关闭。在这种情况下,如果用户按下取消按钮,我该如何停止关机过程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 2010-09-09
  • 1970-01-01
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多