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

问题描述:

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

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

假设你在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。

+5

除了JNI,您可以使用JNA直接调用WIN32API,从而避免需要任何C代码。 http://en.wikipedia.org/wiki/Java_Native_Access – 2010-09-07 21:34:22

虽然您可以使用Java查询监视器配置,但是没有办法以编程方式打开和关闭监视器而不使用JNI。

您可以打开一个全屏幕的摆动窗口,使其完全变黑,所以就可观察到的行为而言,关闭监视器。

+5

好主意!为了让您的解决方案更好,可以将摄像头连接到自助服务终端上,并在“关闭”之前拍摄照片。然后就可以计算(也许使用Java Advanced Imaging(JAI)API)并显示反射图片,如果显示器真的关闭,将显示这些图片。比仅仅显示黑屏更好,现在超过95%的人走过来无法分辨其中的差别。噢,如果显示器的正面有一个LED电源指示灯,那么使用表壳颜色的触摸式铅笔来涂抹它是最合适的。 – bobndrew 2010-09-29 16:42:03

+3

黑色喷漆不会更有效吗? :-) – 2013-08-02 09:25:37

我已经在网上看到这个exe文件nircmd。它是一个免费软件,可以被任何人使用。它具有内置的功能。

nircmd.exe monitor off 

在网站上也有详细的帮助。 只是用它在你的程序和使用

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

调用它或把它到windows目录下,并从那里运行它。