我試圖記下在Ubuntu操作系統中工作的每個員工的工作站/系統屏幕鎖。我需要將這些記錄存儲在數據庫中。使用JAVA。我搜索了全部,並且想到了UBUNTU的想法。但知道如何在Windows操作系統中做同樣的事情。如何使用java在ubuntu中檢測工作站/系統屏幕鎖定?
回答
從here:
gnome-screensaver-command -q | grep "is active"
使用Runtime類來執行該命令並回讀的結果。
編輯:使用grep -q
下面的例子如何使用它:
public class ScreenSaver {
/*
* Pipes are a shell feature, so you have to open a shell first.
*
* You could use process.getInputStream() to read the output and parse it.
*
* For productive use i would prefer using the Inputstream.
*/
private static final String COMMAND = "gnome-screensaver-command -q | grep -q 'is active'";
private static final String[] OPEN_SHELL = { "/bin/sh", "-c", COMMAND };
private static final int EXPECTED_EXIT_CODE = 0;
public static boolean isScreenSaverActive() {
final Runtime runtime = Runtime.getRuntime();
Process process = null;
try {
/*
* open a shell and execute the command in that shell
*/
process = runtime.exec(OPEN_SHELL);
/*
* wait for the command to finish
*/
return process.waitFor() == EXPECTED_EXIT_CODE;
} catch(final IOException e) {
e.printStackTrace();
} catch(final InterruptedException e) {
e.printStackTrace();
}
return false;
}
public static void main(final String[] args) {
System.out.println("Screensaver is active: " + isScreenSaverActive());
}
}
編輯:添加perl腳本看DBUS信號。來源: Gnome Screensaver FAQ
#!/usr/bin/perl
my $cmd = "dbus-monitor --session \"type='signal',interface='org.gnome.ScreenSaver',member='ActiveChanged'\"";
open (IN, "$cmd |");
while (<IN>) {
if (m/^\s+boolean true/) {
print "*** Screensaver is active ***\n";
} elsif (m/^\s+boolean false/) {
print "*** Screensaver is no longer active ***\n";
}
}
有嘗試看看這裏,(類似一式兩份),Detect workstation/System Screen Lock using Python(ubuntu))
GNOME Screensaver FAQ這應該是一個真棒參考你起牀的速度。我想你正在使用GNOME。
我已經看到了這些網站,我得到語法錯誤,而我在終端中運行。由於我是Linux新手,無法調試這些語法錯誤。 **/home/sathishkumarkk/Desktop/userinfo.sh:2:my:找不到 /home/sathishkumarkk/Desktop/userinfo.sh:4:語法錯誤:單詞意外(期待「)」) **' – 2012-01-19 10:33:25
您應該粘貼您的整個腳本,因爲沒有人可以在不查看代碼的情況下調試您的錯誤。使用pastie.org並顯示您的代碼。 – 2012-01-19 10:43:01
這裏是我在終端中運行的shell腳本。 [我的shell腳本在.sh文件中](http://pastie.org/pastes/3212744/text) – 2012-01-19 10:58:44
- 1. 使用Python檢測工作站/系統屏幕鎖定(ubuntu)
- 2. 如何檢測工作站/系統屏幕使用Java在Windows操作系統中鎖定/解鎖?
- 3. 如何檢測在Windows Phone 8.1中鎖定/解鎖屏幕?
- 4. 如何播放音樂使用AVAudioPlayer當屏幕鎖定操作系統
- 5. 如何在Android上檢測屏幕鎖定的鎖定和解鎖
- 6. 屏幕鎖定時檢測UWP
- 7. 屏幕鎖定時檢測NFC標籤
- 8. iPhone屏幕鎖定時檢測觸摸
- 9. 如何檢測多顯示器系統中的屏幕位置?
- 10. 如何在屏幕鎖定時使服務正常工作?
- 11. 在工作站被鎖定時捕捉屏幕截圖
- 12. 如何讓應用程序在屏幕鎖定下工作?
- 13. 使用Java來鎖定屏幕
- 14. 在後臺應用程序中檢測鎖定屏幕
- 15. 如何使用React Native檢測屏幕解鎖?
- 16. 如何使用C#鎖定屏幕?
- 17. iOS今日小工具擴展 - 檢測屏幕是否鎖定
- 18. 如何檢測iPhone屏幕是否鎖定(關閉)
- 19. 如何在Windows中鎖定屏幕?
- 20. 在java中使用系統調用捕獲屏幕的代碼
- 21. 屏幕保護程序在鎖定窗口時如何工作
- 22. 如何鎖定屏幕?
- 23. 如何鎖定屏幕Android
- 24. 檢測在IOS中正確輸入的屏幕鎖定密碼
- 25. 鎖定屏幕在Android中
- 26. java swing如何從不同的操作系統繪製屏幕?
- 27. 鎖定屏幕
- 28. 鎖定屏幕
- 29. 如何解鎖鎖定屏幕?
- 30. iOS今日小工具擴展:檢測是否在鎖定屏幕中打開
謝謝我讓你的代碼工作,但我把你的代碼寫在一個java代碼中,並把它打包成一個.jar文件來運行。威爾我鎖定或解鎖我需要運行此文件的屏幕如何做到這一點。我有一個想法來監視屏幕保護程序,並通過先生viki.omega9指示的代碼運行我的jar文件,但它給出了語法錯誤。我在評論他的回答時提到了這一點。 – 2012-01-19 11:11:48
我也有類似的代碼類型,你給。 **我現在需要的是讓這個jar文件只在屏幕鎖定和解鎖時執行。** – 2012-01-19 12:06:24
所以當屏幕鎖定/解鎖然後執行jar文件時,你需要類似的東西來監聽事件嗎?請澄清一下,我真的不明白你想完成什麼。 – 2012-01-19 12:10:25