2010-09-07 4 views
6

Comment allumer et éteindre un moniteur à partir d'une application Java? Dans le cas où vous vous demandez pourquoi, c'est une application de style kiosque où il serait bien d'éteindre les moniteurs la nuit. Oui, vous pouvez le faire dans les paramètres de l'économiseur d'écran de la machine, mais ce serait génial de le faire par programmation et d'éviter d'avoir à le configurer sur chaque machine.Comment allumer et éteindre un moniteur à partir d'une application Java?

Répondre

10

En supposant que vous déployez vos applications Java sur Windows, vous pouvez utiliser ces fonctions 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);  

Ensuite, vous écrivez un peu C-JNI wrapper aux fonctions qui appellent les mentionnées SendMessage et utilisent le petit wrapper pour éteindre le moniteur de Java.

+5

Alternativement à JNI, vous pouvez utiliser JNA pour appeler le WIN32API directement, en évitant d'avoir besoin d'un code de collage C. http://en.wikipedia.org/wiki/Java_Native_Access –

2

Bien que vous puissiez interroger les configurations de moniteur avec Java, il n'y a aucun moyen d'activer et de désactiver les moniteurs par programmation sans utiliser JNI.

-4

Vous pouvez ouvrir une fenêtre pivotante plein écran, la rendre complètement noire, de sorte que le moniteur, en ce qui concerne le comportement observable, est désactivé.

+5

Bonne idée! Pour rendre votre solution encore meilleure, vous pouvez connecter une webcam au PC-kiosque et prendre une photo avant de "fermer". Ensuite, il serait possible de calculer (peut-être avec l'API Java Advanced Imaging (JAI)) et montrer une image des réflexions, qui seraient montrées si le moniteur était vraiment éteint. Mieux que de montrer juste un écran noir, maintenant plus de 95 pour cent des gens qui marchent ne pouvaient pas faire la différence. Oh, et si le moniteur est doté d'une DEL de mise sous tension à l'avant, l'utilisation d'un crayon de retouche de la couleur de l'étui pour le repeindre serait la plus appropriée. – bobndrew

+3

La peinture en aérosol noire ne serait-elle pas plus efficace? :-) –

2

J'ai vu cet exe nommé nircmd sur le net. C'est un freeware et peut être utilisé par n'importe qui.Il a une fonction intégrée pour ce faire.

nircmd.exe monitor off 

Une aide détaillée est également présente sur le site Web. Il suffit d'utiliser dans votre programme et appeler à l'aide

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

ou de le mettre dans le répertoire Windows et l'exécuter à partir de là.

Questions connexes