我有一个在 Linux 上运行的 Java JFrame 应用程序,我需要检查屏幕的状态(即屏幕保护程序是否已激活)。是否有使用 Java 内置函数(如 System 或 Toolkit)来检查屏幕属性以及是否激活了屏幕保护程序?
问问题
209 次
1 回答
0
Java 不能直接处理系统任务。您应该使用 JNI(Java 本机接口)或 JNA(Java 本机访问)来执行此操作。尝试使用JNA库来调用SystemParametersInfo系统调用,如下所示:
以下示例使用JNA 提供的win32 示例中的代码:
public class JNATest {
public static void main(String[] args) {
W32API.UINT_PTR uiAction = new W32API.UINT_PTR(User32.SPI_GETSCREENSAVERRUNNING);
W32API.UINT_PTR uiParam = new W32API.UINT_PTR(0);
W32API.UINT_PTR fWinIni = new W32API.UINT_PTR(0);
PointerByReference pointer = new PointerByReference();
User32.INSTANCE.SystemParametersInfo(uiAction, uiParam, pointer, fWinIni);
//Is false if 0, is true if 1.
boolean running = pointer.getPointer().getByte(0) == 1;
System.out.println("Screen saver running: "+running);
}
}
public interface User32 extends W32API {
User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class, DEFAULT_OPTIONS);
long SPI_GETSCREENSAVERRUNNING = 0x0072;
boolean SystemParametersInfo(
UINT_PTR uiAction,
UINT_PTR uiParam,
PointerByReference pvParam,
UINT_PTR fWinIni
);
}
于 2013-06-25T14:44:21.970 回答