当前位置: 首页 > 面试题库 >

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

欧阳斌
2023-03-14
问题内容

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

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

我不需要干净的解决方案,您只需要在Windows XP上工作即可。


问题答案:

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

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


}


 类似资料:
  • 屏幕保护程序     设定输出影像时,若不执行任何操作,需经过多久才会自动启动屏幕保护程序。只要按下PSP™主机的任何一个按钮,即能解除屏幕保护程序。 关 不启动屏幕保护程序。 5分后 5分后启动屏幕保护程序。 10分后 10分后启动屏幕保护程序。 15分后 15分后启动屏幕保护程序。 提示 执行以下操作时,屏幕保护程序可能会暂时停用。 播放UMD™ Video或暂停播放时 播放保存于Memory

  • 那么当屏幕被锁定时,是否有任何方法显示特定的XAML页面。目前我正在使用toast通知来完成此操作。但是toast通知的问题是我对UI没有太多的控制。

  • 问题内容: 我编写了一个程序,可通过深度优先搜索解决迷宫问题。我想知道如何将该Java程序转换为Screensaver应用程序?通常可以激活屏幕保护程序时,Windows 7是否可以启动我的应用程序? 问题答案: Windows屏幕保护程序只是接受某些命令行参数的程序。因此,为了使您的程序可以作为屏幕保护程序运行,您必须对其进行编码以接受这些参数。 接下来,您可能希望屏幕保护程序以全屏模式运行。这

  • 问题内容: 在C语言中,如何以编程方式找出Linux / Ubuntu上是否已在运行某个进程,以避免该进程两次启动?我正在寻找类似于pidof的东西。 问题答案: 您可以进入这些条目并在文件中检查过程,也可以在链接上执行操作(以下使用第一种方法)。

  • 问题内容: 有什么方法可以确定进程(脚本)是否在lxc容器(〜Docker运行时)中运行?我知道有些程序能够检测它们是否在虚拟机中运行,是否可以为lxc / docker使用类似的程序? 问题答案: 最可靠的方法是检查。它会告诉您init进程的控制组,并且当您 不在 容器中时,它将用于所有层次结构。当您 在 容器内时,将看到锚点的名称。对于LXC / Docker容器,将分别类似于或。

  • 我正在尝试创建一个bash实用程序脚本来检查docker守护程序是否在我的服务器中运行。除了运行这样的代码之外,有没有更好的方法来检查docker守护程序是否在我的服务器中运行? 我想创建一个bash shell脚本来检查我的docker守护进程是否正在运行。如果它正在运行,那么什么也不做,但是如果它没有运行,那么就启动docker守护进程。 我的伪代码大概是这样的。我正在考虑解析我的ps -ef