2

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

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

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

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

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

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

4

4 回答 4

3

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

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

于 2008-09-16T13:00:55.137 回答
1

How-do-i-get-my-java-application-to-shutdown-nicely-in-windows

这可能会有所帮助

于 2008-09-16T12:57:35.003 回答
0

以上似乎是更好的答案。

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

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

于 2008-09-16T12:59:05.280 回答
0

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

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

于 2008-09-16T12:59:16.060 回答