Comment changer la luminosité de l'écran d'un ordinateur portable à partir d'une application java?


Je souhaite créer une application java pour modifier la luminosité de l'écran de l'ordinateur portable sous Windows xp/7. Veuillez aider

Author: Sujal Patel, 2013-04-08

2 answers

Comme d'autres l'ont dit, il n'y a pas d'API officielle à utiliser. Cependant, en utilisant Windows Powershell (qui vient avec Windows je crois, donc pas besoin de télécharger quoi que ce soit) et WmiSetBrightness, on peut créer une solution de contournement simple qui devrait fonctionner sur tous les PC Windows avec visa ou une version ultérieure installée.

Tout ce que vous devez faire est de copier cette classe dans votre espace de travail:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class BrightnessManager {
    public static void setBrightness(int brightness)
            throws IOException {
        //Creates a powerShell command that will set the brightness to the requested value (0-100), after the requested delay (in milliseconds) has passed. 
        String s = String.format("$brightness = %d;", brightness)
                + "$delay = 0;"
                + "$myMonitor = Get-WmiObject -Namespace root\\wmi -Class WmiMonitorBrightnessMethods;"
                + "$myMonitor.wmisetbrightness($delay, $brightness)";
        String command = "powershell.exe  " + s;
        // Executing the command
        Process powerShellProcess = Runtime.getRuntime().exec(command);

        powerShellProcess.getOutputStream().close();

        //Report any error messages
        String line;

        BufferedReader stderr = new BufferedReader(new InputStreamReader(
                powerShellProcess.getErrorStream()));
        line = stderr.readLine();
        if (line != null)
        {
            System.err.println("Standard Error:");
            do
            {
                System.err.println(line);
            } while ((line = stderr.readLine()) != null);

        }
        stderr.close();

    }
}

Puis appelez

BrightnessManager.setBrightness({brightness});

Où {luminosité} est la luminosité que vous souhaitez définir l'affichage de l'écran à avec 0 étant la luminosité prise en charge la plus faible et 100 étant la plus brillante.

Un grand merci à anquegi pour le code powershell trouvé ici que j'ai adapté pour exécuter cette commande.

 3
Author: Darty11, 2017-05-23 12:18:33

Je ne pense pas qu'il y ait une API standard qui le fasse en Java.

Mais il semble que vous pouvez le faire en.NET dans Windows. Voir: Quel appel API utiliserais-je pour changer la luminosité de l'ordinateur portable (. NET)?

Vous pouvez toujours utiliser une interface JNI pour appeler une méthode native écrite en C++ - cela pourrait donc être une solution de contournement.

 0
Author: rich, 2017-05-23 10:29:57