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
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.
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.