Come cambiare la luminosità dello schermo del computer portatile da un'applicazione java?


Voglio creare un'applicazione java per modificare la luminosità dello schermo del laptop su Windows xp/7. Per favore aiuto

Author: Sujal Patel, 2013-04-08

2 answers

Come altri hanno affermato, non c'è alcuna API ufficiale da usare. Tuttavia, utilizzando Windows Powershell (che viene fornito con Windows credo, quindi non c'è bisogno di scaricare nulla) e WmiSetBrightness, si può creare una soluzione semplice che dovrebbe funzionare su tutti i PC Windows con visa o successivamente installato.

Tutto quello che devi fare è copiare questa classe nel tuo spazio di lavoro:

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();

    }
}

E quindi chiamare

BrightnessManager.setBrightness({brightness});

Dove {brightness} è la luminosità che si desidera impostare sullo schermo a con 0 è la luminosità più debole supportata e 100 è la più luminosa.

Un grande grazie ad anquegi per il codice powershell trovatoqui che ho adattato per eseguire questo comando.

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

Non penso che ci sia un'API standard che lo faccia in Java.

Ma sembra che tu possa farlo in.NET in Windows. Vedere: Quale chiamata API dovrei usare per cambiare la luminosità del laptop (. NET)?

Puoi sempre usare un'interfaccia JNI per chiamare un metodo nativo scritto in C++ - quindi questa potrebbe essere una soluzione alternativa.

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