java - 在 Java 应用程序中检测 Windows 注销事件

标签 java windows events shutdown-hook

是否有一个库可以与 Java 结合使用来监听用户注销和可能的其他 Windows 事件? (如果它支持多个平台就更好了!)

我记得几年前读过有关此类图书馆的信息,但现在似乎找不到了。我已经看到其他线程使用 Python 和 win32ts 来做基本相同的事情。

如果它是免费和/或开源的就更好了。

谢谢。

注意:使用Runtime.getRuntime().addShutdownHook(Thread) 的候选解决方案不能与javaw 一起正常工作。我仍在寻找可以与 javaw 一起使用的解决方案。请参阅 java 错误 ID 44865804302814 .谢谢 --cam

最佳答案

我想你想看看Runtime.addShutdownHook() .这为您提供了在 JVM 关闭之前执行操作的最后机会。这使您可以检测到所有应用程序都已关闭的实际注销,但它们只是暂时切换用户,让它们的状态准备好返回。但是,作为警告,无论您计划在关闭过程中做什么,都需要简短,因为操作系统可能随时对您发出 SIGKILL(或等效信号),这会立即停止 JVM。

如果这不是您所需要的,您可能需要使用 JNI 来注册 native 监听器。对于其他 Windows 事件,AWT 库提供了许多类来实现大多数普通应用程序可能感兴趣的监听器。在这种情况下,您可能对 FocusEvent 感兴趣。 .

关于java - 在 Java 应用程序中检测 Windows 注销事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/512555/

相关文章:

c++ - 无法获取ms _tzSet()示例进行编译

java - 使用注释的 JAXB 验证

java - 如何修复java中找不到tzdb.dat错误?

windows - winforms、web窗体和windows窗体的区别

javascript - Vuejs 事件处理程序中是否需要 $event?

javascript - 如何使用按键触发事件(ctrl +)(jQuery)

元素子元素的 JQuery 触发事件

java - 随机数生成器在 Android 上生成相同的数字

java - 当解决与 git 的 merge 冲突时,可解决的差异是否会自动 merge ?

windows - 检查当前目录名称中是否包含空格