是否有一个库可以与 Java 结合使用来监听用户注销和可能的其他 Windows 事件? (如果它支持多个平台就更好了!)
我记得几年前读过有关此类图书馆的信息,但现在似乎找不到了。我已经看到其他线程使用 Python 和 win32ts 来做基本相同的事情。
如果它是免费和/或开源的就更好了。
谢谢。
注意:使用Runtime.getRuntime().addShutdownHook(Thread)
的候选解决方案不能与javaw
一起正常工作。我仍在寻找可以与 javaw 一起使用的解决方案。请参阅 java 错误 ID 4486580和 4302814 .谢谢 --cam
最佳答案
我想你想看看Runtime.addShutdownHook() .这为您提供了在 JVM 关闭之前执行操作的最后机会。这使您可以检测到所有应用程序都已关闭的实际注销,但它们只是暂时切换用户,让它们的状态准备好返回。但是,作为警告,无论您计划在关闭过程中做什么,都需要简短,因为操作系统可能随时对您发出 SIGKILL(或等效信号),这会立即停止 JVM。
如果这不是您所需要的,您可能需要使用 JNI 来注册 native 监听器。对于其他 Windows 事件,AWT 库提供了许多类来实现大多数普通应用程序可能感兴趣的监听器。在这种情况下,您可能对 FocusEvent 感兴趣。 .
关于java - 在 Java 应用程序中检测 Windows 注销事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/512555/