【问题标题】:How do you turn on and off a monitor from within a Java application?如何从 Java 应用程序中打开和关闭监视器?
【发布时间】:2011-04-09 09:23:31
【问题描述】:

如何在 Java 应用程序中打开和关闭监视器?

如果您想知道为什么,这是一个信息亭风格的应用程序,在晚上关闭显示器会很棒。是的,您可以在机器的屏幕保护程序设置中执行此操作,但最好以编程方式执行此操作并避免在每台计算机上进行配置。

【问题讨论】:

    标签: java swing monitor


    【解决方案1】:

    假设你在 Windows 上部署你的 Java 应用程序,你可以使用这个 WIN32API 函数:

    // turn off monitor
    SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 2); 
    
    // turn on monitor
    SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) -1);    
    

    然后你写一点C-JNI wrapper 到调用提到的SendMessage 的函数中,并使用这个小包装器从Java 中关闭监视器。

    【讨论】:

    【解决方案2】:

    虽然您可以使用 Java 查询监视器配置,但如果不使用 JNI,则无法以编程方式打开和关闭监视器。

    【讨论】:

      【解决方案3】:

      我在网上看到了这个名为nircmd 的exe。它是一个免费软件,任何人都可以使用。它有一个内置的功能来做到这一点。

      nircmd.exe monitor off 
      

      还可以在网站上找到详细的帮助。 只需在您的程序中使用它并使用

      调用它
      Runtime.getRuntime().exec(this.getClass().getResource("nircmd.exe").getPath());
      

      或者把它放到windows目录下并从那里运行。

      【讨论】:

        【解决方案4】:

        您可以打开一个全屏摆动窗口,使其完全变黑,这样就可观察到的行为而言,显示器会关闭。

        【讨论】:

        • 好主意!为了使您的解决方案更好,可以将网络摄像头连接到 kiosk-PC 并在“关闭”之前拍照。然后可以计算(可能使用 Java 高级成像 (JAI) API)并显示反射图片,如果监视器真的关闭,就会显示。比只显示黑屏要好,现在超过 95% 的路过的人无法区分。哦,如果显示器前面有一个电源 LED,那么使用与外壳颜色相同的补漆铅笔将其涂上是最合适的。
        • 黑色喷漆不是更有效吗? :-)
        猜你喜欢
        • 2011-05-19
        • 2010-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多