2010-09-07 10 views
6

¿Cómo enciende y apaga un monitor desde una aplicación Java?¿Cómo enciende y apaga un monitor desde una aplicación Java?

En caso de que se pregunte por qué, esta es una aplicación de tipo kiosco en la que sería genial apagar los monitores por la noche. Sí, puede hacerlo dentro de la configuración del salvapantallas de la máquina, pero sería genial hacerlo programáticamente y evitar tener que configurarlo en cada máquina.

Respuesta

10

Asumiendo que implementar las aplicaciones Java en Windows, puede utilizar estas funciones 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);  

A continuación, escribir un poco C-JNI wrapper a las funciones que llaman a la mencionada SendMessage y utilizan el pequeño envoltorio para apagar el monitor de Java.

+5

Como alternativa a JNI, puede usar JNA para llamar directamente a WIN32API, evitando la necesidad de cualquier código de pegamento C. http://en.wikipedia.org/wiki/Java_Native_Access –

2

Si bien puede consultar las configuraciones del monitor con Java, no hay forma de activar y desactivar los monitores mediante programación sin utilizar JNI.

-4

Puede abrir una ventana desplegable de pantalla completa, hacerla completamente negra, de modo que el monitor, en cuanto a comportamiento observable, se apague.

+5

¡Buena idea! Para que su solución sea aún mejor, se puede conectar una cámara web al kiosco-PC y tomar una foto antes de "apagar". Entonces sería posible calcular (tal vez con la API de Java Advanced Imaging (JAI)) y mostrar una imagen de los reflejos, que se mostraría si el monitor realmente se apagó. Es mejor que mostrar solo una pantalla negra, ahora más del 95 por ciento de las personas que pasan no podrían notar la diferencia. Ah, y si el monitor tiene un LED de encendido en la parte delantera, el uso de un lápiz de retoque en el color de la caja para pintarlo sería lo más apropiado. – bobndrew

+3

¿No sería más efectiva la pintura en aerosol negra? :-) –

2

He visto este exe llamado nircmd en la red. Es un software gratuito y puede ser utilizado por cualquier persona. Tiene una función incorporada para hacer esto.

nircmd.exe monitor off 

También encontrará ayuda detallada en el sitio web. sólo lo utilizan en su programa y lo llaman usando

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

o lo pone en el directorio de Windows y ejecutarlo desde allí.

Cuestiones relacionadas