2009-01-16 64 views
9

我正在尋找一種方法來了解Java應用程序(沒有 JNI - 它是一個多平臺應用程序)可以檢測到屏幕是否被鎖定。Java應用程序是否有辦法檢測屏幕是否被鎖定?

有關信息...我們的應用程序記錄了用戶正在工作時的時間 - 我們希望它在屏幕鎖定時自動停止記錄,而不是用戶必須明確這樣做。

+0

只是好奇,但也許它也導致更好的答案:這是什麼目的? – 2009-01-16 13:57:50

+0

應用程序記錄用戶正在工作時的時間 - 我們希望在屏幕自動鎖定時停止記錄,而不是顯式地執行此操作。 – 2009-01-16 14:01:42

+0

Spark中存在類似的需求(在我的回答中提到):鎖定工作站時設置存在...對於該跨平臺IM客戶端非常有用。 – VonC 2009-01-16 14:07:51

回答

1

我不認爲有一個API或甚至一個方法來做到這一切。解析由java.awt.Robot生成的屏幕截圖既不是平臺,也不是版本,甚至是配置無關的,一般來說,我不認爲「屏幕鎖定」是一個足夠好的定義概念,在Linux上,可以有不止一個「屏幕」(X服務器),您可以切換到控制檯終端,您可以讓運行一臺(或多臺)機器的應用程序通過網絡在另一臺計算機上顯示它們的GUI ...

1

我確認似乎沒有Java API來檢測屏幕鎖定狀態。

Spark開發者在2006年試了一下(像這樣的thread shows),但沒有透露具體的實現細節。
但是,它可能涉及JNI和本地調用功能,如WTSQuerySessionInformation(要檢測是否斷開使用WTSQuerySessionInformation(NULL, WTS_CURRENT_SESSION, WTSConnectState)並查找WTSDisconnected)。

因此,作爲Michael pointed out,沒有「多平臺」通用答案(據我所知)。

相關問題