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

时间:2008-09-16 12:48:45

标签: java swing operating-system

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

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

正常的Swing窗口关闭挂钩不起作用,也没有添加关闭挂钩。

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

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

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

4 个答案:

答案 0 :(得分:3)

将一些JNI代码写入WM_QUERYENDSESSION消息。您可以从MSDN文档或Google搜索中获取详细信息。

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

答案 1 :(得分:1)

答案 2 :(得分:0)

以上似乎是更好的答案。

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

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

答案 3 :(得分:0)

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

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