java - 如何检查显示器是否打开或关闭

标签 java awt monitor

我想知道是否可以了解显示器是打开还是关闭。

这是我尝试过的:

    GraphicsEnvironment g = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice[] devices = g.getScreenDevices();
    int monitor_count = 0;
    for(GraphicsDevice device : devices){
        if(device.getType() == GraphicsDevice.TYPE_RASTER_SCREEN)
            monitor_count++;
    }
    if(monitor_count==0){
        System.out.println("Monitor is OFF");
    }else{
        System.out.println("Monitor is ON");
    }

但即使我关闭显示器(或直接断开电源),它仍然会继续算作一台显示器。

我如何知道显示器是否关闭?

最佳答案

这在跨平台 Java 中当然是不可能的,而且说实话,即使我们求助于 native 代码,在可靠的意义上也确实不可能。

在 Windows 上本地执行此操作的(不可靠)方法是使用 GetDevicePowerState - 在kernel32.dll中找到它。然而,从我不久前使用此功能进行的实验来看,我可以说它绝对不适用于所有显示器,而且显然即使这是可靠的,它也将是一个仅限 Windows 的解决方案。

如果您确实想走这条路线,同时牢记上述限制,请使用 MonitorFromPoint获取主监视器的句柄(传入 0,0 作为点并使用 MONITOR_DEFAULTTOPRIMARY 标志。)

关于java - 如何检查显示器是否打开或关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19859759/

相关文章:

android - 如何在android native中每2秒检查一次webview的http url连接

java - .zip 项目的 Maven 程序集,仅包含 .jar 和配置文件

针对 UI 本地化的 Java 日期格式帮助文本

java - Buildozer,如何添加外部 python 包?

Java AWT : Will applet run without main(), init()、start()、paint()

java - 如何使用 Java 监控我的网络连接?

java - 您如何使 UML 图保持最新?

java - Linux 平台上的 Desktop#browse 是否仅支持 Gnome 桌面?

javascript - 在Java中绘制形状并在HTTP请求中返回到浏览器

python - PyGTK:如何制作剪贴板监视器?