有没有办法让Java应用程序检测屏幕是否被锁定?

时间:2009-01-16 13:40:12

标签: java

我正在寻找一种在Java应用程序中知道的方法(没有 JNI - 它是一个多平台应用程序)可以检测屏幕是否被锁定。

有关信息...我们的应用程序在用户工作时记录时间 - 我们希望它在屏幕被锁定时自动停止录制而不是用户必须明确地停止录制。

2 个答案:

答案 0 :(得分:1)

我不认为有这样的API,甚至没有办法做到这一切。解析java.awt.Robot生成的屏幕截图既不是平台也不是版本甚至是配置独立的,一般来说,我不认为“屏幕被锁定”是一个足够明确的概念,在这个意义上使用 - 在Linux上,可以有不止一个“屏幕”(X服务器),你可以切换到控制台终端,你可以让运行一台(或多台)机器的应用程序通过网络在另一台机器上显示它们的GUI ...

答案 1 :(得分:1)

我确认似乎没有Java API来检测屏幕锁定状态。

Spark开发人员在2006年试了一下(比如thread shows),但未详细说明具体实施情况。
但是,它可能涉及JNI和本地调用WTSQuerySessionInformation之类的函数(要检测是否断开连接使用WTSQuerySessionInformation(NULL, WTS_CURRENT_SESSION, WTSConnectState)并查找WTSDisconnected)。

所以,作为Michael pointed out,没有“多平台”的普遍回答(据我所知)。