如何从Swing应用程序检测到PC正在关闭?

时间:2020-03-05 18:55:49  来源:igfitidea点击:

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

如何使我的应用检测关闭事件?如果用户选择说"取消",则任何解决方案都应允许用户中止关机。

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

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

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

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

解决方案

回答

我如何在Windows中很好地关闭我的Java应用程序

那可能有帮助

回答

以上似乎是更好的答案。

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

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

回答

在Java中寻找信号处理。 Windows关闭时,它将向应用程序发送信号,要求其终止最有可能是sigterm的信号

有关更多信息,请参见此处(我不是网站的所有者)

回答

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

如果我们不想编写太多的C ++代码来执行此操作,那么我建议我们单击此处的JNA库。这为我们提供了一些不错的Java C语言抽象。