hannsgmaulwurf
Goto Top

Zeit für Energiesparmodus, Bildschirmabschaltung etc. schnell anpassen

Hallo,

ich war auf der Suche nach einem Skript, welches mir erlaubt, den Energiesparmodus eines Windows Rechners auf die Schnelle anzupassen, ohne sich jedes Mal zu den Energieoptionen durchklicken zu müssen... Ich habe mir ein kleines Programm vorgestellt, das auf dem Desktop aller User liegt und per Doppelklick und zwei, drei weitere Klicks die Zeiten der Energieoptionen anpassen lässt, ohne sich jedes Mal durch die Systemsteuerung suchen und klicken zu müssen.

Hintergrund:
Wer den Energiesparmodus von Windows nutzt, hat in den Energieoptionen einen (seinen) bevorzugten Wert für das Abschalten des Bildschirmes oder das Versetzen des Rechners in den Energiesparmodus eingetragen bzw. per GPO in einer AD Umgebung festgelegt, z.B. 30 Minuten bis Bildschirmabschaltung und eine Stunde bis Energiesparmodus.

Nun kann es immer mal wieder vorkommen, dass man diese Standardwerte kurzfristig anpassen möchte, z.B. wenn man einen Workshop durchführt, bei dem eine Grafik über einen längeren Zeitraum auf die Leinwand geworfen wird und die Teilnehmer sich über den Standardwert für Bildschirmabschaltung und /oder Energiesparmodus hinaus zu dieser Grafik austauschen, ohne dass eine Interaktion (Maus/Tastatur) am Rechner stattfindet. Um zu verhindern, dass Bildschirm und/oder Rechner abgeschaltet werden, müsste man umständlich zu den Energieoptionen des Rechners wechseln und dort die gewünschten Werte eintragen... Bequemer wäre es, mit einem Klick ein kleines Programm zu starten, mit dem man die gewünschten Werte direkt einstellen kann. Da ich genau so etwas gesucht aber nicht gefunden habe, habe ich etwas recherchiert und rumprobiert. Ergebnis ist der folgende Autoit Quelltext, der, kompiliert, eine kleine GUI erzeugt, in der man Minuten oder Stunden für den Energiesparmodus mit wenigen Klicks ändern kann.
Im folgenden Quellcode sind lediglich die CMD Befehle für den Energiesparmodus eingearbeitet - die Einstellungen für das Abschalten des Monitor usw. können entsprechend angepasst/ergänzt werden. Alle verfügbaren Parameter des relevanten Befehls POWERCFG sind hier zu finden. Wer keine Erfahrung mit Autoit hat, dem sei dieses Tutorial ans Herz gelegt, um Autoit runterzuladen, zu installieren und den u.g. Quellcode anzupassen oder einfach nur zu einer lauffähigen exe zu kompilieren.

Fragen, Ergänzungen, Hinweise, Optimierungsvorschläge usw. sind erwünscht und herzlich willkommen!! face-smile

Code:
#include <file.au3>
#include <MsgBoxConstants.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

;Fenster
	$FormPowercfg = GUICreate("Powercfg", 340, 150, -1, -1)  
;Bereich Minuten
	$ComboMinuten = GUICtrlCreateCombo("0", 137, 15, 40, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))  
	GUICtrlSetData($ComboMinuten, "1|2|3|5|10|15|20|25|30|45", "0")  
	$Label1 = GUICtrlCreateLabel("Energiesparmodus nach", 15, 20, 118, 17)  
	$Label2 = GUICtrlCreateLabel("Minuten", 183, 20, 44, 17)  
	$ButtonAnwendenMinuten = GUICtrlCreateButton("Anwenden", 240, 15, 75, 25)  
;Bereich Stunden
	$ComboStunden = GUICtrlCreateCombo("0", 137, 55, 40, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))  
	GUICtrlSetData($ComboStunden, "1|2|3|4|5", "0")  
	$Label3 = GUICtrlCreateLabel("Energiesparmodus nach", 15, 60, 118, 17)  
	$Label4 = GUICtrlCreateLabel("Stunden", 183, 60, 44, 17)  
	$ButtonAnwendenStunden = GUICtrlCreateButton("Anwenden", 240, 55, 75, 25)  
;Infotext
	$Label5 = GUICtrlCreateLabel("0 = Energiesparmodus deaktivieren", 15, 120, 170, 17)  
;Button Abbrechen
	$ButtonAbbrechen = GUICtrlCreateButton("Abbrechen", 240, 95, 75, 50)  
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $ButtonAbbrechen
			Exit
		Case $ButtonAnwendenMinuten
			_PowercfgChangeStandbyTimeoutMinuten()
			Exit
		Case $ButtonAnwendenStunden
			_PowercfgChangeStandbyTimeoutStunden()
			Exit
	EndSwitch
WEnd

Func _PowercfgChangeStandbyTimeoutMinuten()
	$Minuten = GUICtrlRead($ComboMinuten)
	Run (@ComSpec & " /c powercfg -change -standby-timeout-ac " & $Minuten)  
	Run (@ComSpec & " /c powercfg -change -standby-timeout-dc " & $Minuten)  
	If $Minuten > 0 Then
		MsgBox(0,"Powercfg", "Energiespareinstellungen angepasst:" & @CRLF & @CRLF & "Energiesparmodus nach " & $Minuten & " Minuten.", 10)  
	Else
		MsgBox(0,"Powercfg", "Energiespareinstellungen angepasst:" & @CRLF & @CRLF & "Energiesparmodus deaktiviert.", 10)  
	EndIf
EndFunc

Func _PowercfgChangeStandbyTimeoutStunden()
	$Stunden1 = GUICtrlRead($ComboStunden)
	$Stunden2 = $Stunden1 * 60
	Run (@ComSpec & " /c powercfg -change -standby-timeout-ac " & $Stunden2)  
	Run (@ComSpec & " /c powercfg -change -standby-timeout-dc " & $Stunden2)  
	If $Stunden1 > 0 Then
		MsgBox(0,"Powercfg", "Energiespareinstellungen angepasst:" & @CRLF & @CRLF & "Energiesparmodus nach " & $Stunden1 & " Stunden.", 10)  
	Else
		MsgBox(0,"Powercfg", "Energiespareinstellungen angepasst:" & @CRLF & @CRLF & "Energiesparmodus deaktiviert.", 10)  
	EndIf
EndFunc

Content-ID: 346999

Url: https://administrator.de/contentid/346999

Ausgedruckt am: 21.11.2024 um 15:11 Uhr