Display-Helligkeit via Batch-Datei

Registriert
14 März 2023
Beiträge
39
Hat jemand schonmal versucht, die Helligkeit des Displays mittels Batch-Datei anzusteuern (anstatt via der FN Tasten-Kombis) für "Heller" und "Dunkler"?

P.S. Die TP-Hotkey Treiber sind installiert.
 
@echo off
powershell (Get-WmiObject -Namespace root\WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,50)

Dieser Befehl verwendet die Windows Management Instrumentation (WMI), um die Helligkeitseinstellungen des Monitors zu ändern. Der Wert "1" gibt an, dass der primäre Monitor verwendet werden soll, und "50" ist der Helligkeitswert, der zwischen 0 und 100 liegen kann.
 
Cool danke dir.

Das werde ich mal austesten.

Wäre es auch möglich, die Helligkeit bei jedem Mausklick kontinuierlich zu erhöhen?
 
Ich habe mal ChatGPT nach einem PowerShell-Skript gefragt, das bei jedem Mausklick die Helligkeit um 10% erhöht. Testen kann ich es allerdings gerade nicht. Aber vielleicht funktioniert es ja direkt. Ansonsten sollte es dir auf jeden Fall schon mal einen guten Start bieten, wie man das umsetzen könnte. Und zur Not kannst du ja ChatGPT selbst nach Hilfe fragen :D

Bash:
Add-Type -AssemblyName System.Windows.Forms

# Funktion zum Erhöhen der Helligkeit um 10%
function IncreaseBrightness {
    $monitor = Get-WmiObject -Namespace root\wmi -Class WmiMonitorBrightnessMethods
    $currentBrightness = $monitor.CurrentBrightness / 100.0
    $newBrightness = [Math]::Min(1.0, $currentBrightness + 0.1) * 100.0
    $monitor.WmiSetBrightness(1, $newBrightness)
}

# Mausklick-Ereignis-Handler
$handler = {
    IncreaseBrightness
}

# Registrieren des Ereignisses
$event = [System.Windows.Forms.MouseEventHandler] $handler
$control = [System.Windows.Forms.Form]::CreateControl()
$control.Add_MouseClick($event)

# Warten auf eine beliebige Taste, um das Skript zu beenden
Write-Host "Drücken Sie eine beliebige Taste, um das Skript zu beenden..."
$host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") | Out-Null

# Entfernen des Ereignisses
$control.Remove_MouseClick($event)


Edit:
Vielleicht habe ich hier die Fähigkeiten von ChatGPT doch überschätzt. Auf jeden Fall funktioniert die Lösung bei mir nicht und ich habe auf die Schnelle auch keine Möglichkeit gefunden die aktuelle Helligkeit abzufragen ohne die Win32 Api zu nutzen (setzen scheint da deutlich einfacher zu sein).
Deshalb hier ein Code, der auch wirklich funktioniert, wenn auch nicht ganz so, wie gewünscht. Denn man muss die Pfeiltasten (Up und Down) nutzen zum Einstellen der Helligkeit und diese wird am Anfang auf 50% gesetzt. Wenn jemand ne Idee hat, wie man die aktuelle Helligkeit einfach auslesen kann, gerne ergänzen.
Also das ganze ist mehr als Anreiz zu sehen. Vielleicht kannst du die Lösung ja passend für deinen Fall adaptieren oder doch auch die Mausabfrage noch zum Laufen bringen.

Bash:
$val = 50
(Get-WmiObject -Namespace root\WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,$val)

"ESC-Taste zum beenden druecken. | Up = + | Down = -"

while ($true) {
    $key = [Console]::ReadKey($true)
    if ($key.Key -eq "UpArrow"){
    if ($val -le 90){
        $val = $val +10
               (Get-WmiObject -Namespace root\WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,$val)
    }
    }
    elseif ($key.Key -eq "DownArrow") {
    if ($val -gt 10){
        $val = $val -10
               (Get-WmiObject -Namespace root\WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,$val)

    }
    }
   
    elseif ($key.Key -eq "ESC"){
    break
    }

}
PS: ich hab das im Texteditor geschrieben, also bitte verzeiht die Optik des Codes 😅
 
Zuletzt bearbeitet:
Helligkeit ändern ist ein HID keycode - hab mit einer USB Tastatur erfolgreich auf 2 ThinkPads unter Windows und Linux Helligkeit geändert. Das kann man also sicher auch irgendwie am Rechner scripten - ist nicht Lenovo-proprietär oder so.

Abfragen... Puh. Da bin ich auch überfragt.
 
@echo off
powershell (Get-WmiObject -Namespace root\WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,50)

Dein obiger Code funktioniert wunderbar per Batch-Datei.

Vielen Dank.
Beitrag automatisch zusammengeführt:

Helligkeit ändern ist ein HID keycode - hab mit einer USB Tastatur erfolgreich auf 2 ThinkPads unter Windows und Linux Helligkeit geändert. Das kann man also sicher auch irgendwie am Rechner scripten - ist nicht Lenovo-proprietär oder so.

Vielleicht funktioniert dein Code auch hier...?
Beitrag automatisch zusammengeführt:

Bash:
$val = 50
(Get-WmiObject -Namespace root\WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,$val)

"ESC-Taste zum beenden druecken. | Up = + | Down = -"

while ($true) {
    $key = [Console]::ReadKey($true)
    if ($key.Key -eq "UpArrow"){
    if ($val -le 90){
        $val = $val +10
               (Get-WmiObject -Namespace root\WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,$val)
    }
    }
    elseif ($key.Key -eq "DownArrow") {
    if ($val -gt 10){
        $val = $val -10
               (Get-WmiObject -Namespace root\WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,$val)

    }
    }
  
    elseif ($key.Key -eq "ESC"){
    break
    }

}

Ist dein obiger Code auch mittels Batch anstatt Bash ausführbar?
 
Zuletzt bearbeitet:
Du kannst den Code ohne Probleme in eine Textdatei kopieren. Diese dann statt .txt mit der Endung .ps1 benennen und zum ausführen rechts klicken und "mit Powershell ausführen" auswählen.

Eine Möglichkeit die Datei mit einem Doppelklick direkt auszuführen hab ich kurzfristig nicht gefunden. Gibt's aber sicher auch.
 
Zuletzt bearbeitet:
Den Code habe ich als .ps1-Datei gespeichert und wie im folgenden Link beschrieben in einer .bat-Datei selben Namens aufgerufen:
https://blog.doenselmann.com/powershell-skript-mit-batch-ausfuehren/

Batch via Doppelklick starten.

Klappt gut, habe das Regeln auf "1er" - Schritte verkleinert.

Beenden lässt es sich leider nicht via ESC-Taste.
Auch SPACE funktioniert nicht.

Dahingegen funktioniert es mit den F-Tasten (z.B. F1) oder man lässt den "break"-Abschnitt in der .ps1-Datei weg und klickt einmal auf den Desktop, dann ist das Script, mit (un-)sichtbarem CMD-Fenster, auch beendet.
Beitrag automatisch zusammengeführt:

Folgender Code funktioniert nun wunderbar :

Display-Helligkeit.bat :

Code:
@echo off

powershell -WindowStyle hidden -ExecutionPolicy Bypass -Command "& '%~dpn0.ps1'"

Obiger Code (.bat-Datei) ruft folgenden Code der .ps1-Datei auf:

Display-Helligkeit.ps1 :

Code:
$val = 85
(Get-WmiObject -Namespace root\WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,$val)

# "ESC-Taste zum beenden drücken. | Up = + | Down = -"

while ($true) {
    $key = [Console]::ReadKey($true)
    if ($key.Key -eq "UpArrow"){
    if ($val -le 90){
        $val = $val +5
               (Get-WmiObject -Namespace root\WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,$val)
    }
    }
    elseif ($key.Key -eq "DownArrow") {
    if ($val -gt 20){
        $val = $val -5
               (Get-WmiObject -Namespace root\WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,$val)

    }
    }
  
    elseif ($key.Key -eq "Escape"){
    break
    }
}


Hier funktioniert nun auch die "Escape" - Taste zu Beenden des Programmes (die Taste war anfangs falsch angegeben)

Im folgenden mal ein Link mit den richtigen + funktionierenden "Tastencodes" für die Console-ReadKey Funktion von PowerShell aufgeführt:
https://learn.microsoft.com/en-us/dotnet/api/system.consolekey?view=net-7.0

Schlussendlich kann man die .BAT - Datei mittels Doppelklick starten und mit Escape wieder beenden.
 
Zuletzt bearbeitet:
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben