gpt4 book ai didi

java - 如何从 Java JFrame 检查屏幕状态

转载 作者:太空宇宙 更新时间:2023-11-04 04:14:35 26 4
gpt4 key购买 nike

我有一个在 Linux 上运行的 Java JFrame 应用程序,我需要检查屏幕的状态(即屏幕保护程序是否已激活)。有没有办法使用像 System 或 Toolkit 这样的 Java 内置函数来检查屏幕属性以及屏幕保护程序是否已激活?

最佳答案

Java无法直接处理系统任务。您应该使用 JNI(Java native 接口(interface))或 JNA(Java native 访问)来执行此操作。尝试使用 JNA库来调用 SystemParametersInfo系统调用如下:

以下示例使用 win32 examples 中的代码JNA提供:

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
);


}

关于java - 如何从 Java JFrame 检查屏幕状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17299976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com