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

标签 java swing operating-system

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

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

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

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

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

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

最佳答案

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

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

关于java - 如何从 Swing 应用程序检测到 PC 正在关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71842/

相关文章:

c++ - 为什么要在运行时加载模块?

linux - 如何修改现有的 Linux 内核模块

operating-system - 如何将编译好的引导扇区放到 U 盘或磁盘上?

java - 一名测试观察员报告 JUnit Suite 中各个测试的结果

java - Springfox swagger-ui.html 未加载

java - 将 JTable 用于 JTree 单元格编辑器

java - 如何防止java游戏卡顿

java - 如何使用Stream过滤嵌套对象?

java - Jackson:序列化 EER 特化

java - 如何在 Java Swing 的 JEditorPane 中将鼠标位置转换为字符位置