gpt4 book ai didi

java - 如何确定屏幕保护程序是否在 Java 中运行?

转载 作者:可可西里 更新时间:2023-11-01 11:22:35 25 4
gpt4 key购买 nike

我的应用程序定期在屏幕上显示信息。但如果屏幕截图处于 Activity 状态,则应用程序应等待用户返回。

有什么方法可以确定屏幕保护程序是否正在运行?

我不需要一个干净的解决方案,你只需要在 windows xp 上工作。

类似的问题,但其他技术: How to determine that a screensaver is running?

最佳答案

尝试使用 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);

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 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2057492/

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