Jaja, meine Mudda müsstet ihr kennen ![]()
Macht ihren PC an, geht vor weg und kommt auch nicht
wieder ![]()
Und wir sind dann die blöden die ihren PC hinter ihr aus machen ![]()
Und das ist auch schon der Grund, warum ich mich in
AutoIt reingearbeitet habe xD
Denn:
Bei Windoof kann man den PC in standby / Ruhezustand versetzen lassen,
aber nicht bei Inaktivität ausschalten. Windoof halt.
Mir scheint mein Script dazu relativ ausgereift
(Ideen / Verbesserungen werden dankend angenommen ^^),
würd mich über eure Meinungen freuen, und wenns wer
nutzen will... greif zu, ich kanns ja nicht verhindern ![]()
Ahja.. dieses komische rumgerechne mit $sleep und $wait kommt
daher, dass ich inzwischen 5 versionen von dem Script geschrieben hab,
und in der ersten Versuchen ich noch mit Sleep's gearbeitet hab,
was das ganze ungenau und träge machte.. ![]()
könnt ihr kürzen ![]()
(Für die ersten Versionen würdet ihr mich sowieso nur auslachen,
deshalb lass ich die ma vorerst weg ^^)
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.2.2.0
Author: noels
Script Function:
Herunterfahren bei Inaktivitität, CPU-schonend ![]()
Inklusive Autostart und speichern der Zeiteinstellung in einer Ini.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#include <GuiConstants.au3>
#include <Constants.au3>
RegRead( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Inaktiv5.1" )
If @error Then
$answer = MsgBox( 4+32, "Autostart", "Möchten Sie das Programm in den" & @CRLF & "Autostart setzen?" )
If $answer = 6 Then
RegWrite( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Inaktiv5.1", "REG_SZ", @ScriptFullPath )
ElseIf $answer = 7 Then
MsgBox( 0, "Autostart", "Das Programm wurde nicht in den" & @CRLF & "Autostart gesetzt." )
EndIf
EndIf
Dim $i = 0
$sleep = IniRead( @MyDocumentsDir&"\Inaktiv.ini", "Sleep", "Minuten", 20 )
Dim $wait = $sleep*60000
Opt("TrayAutoPause", 0 )
Opt( "TrayMenuMode", 1 )
Opt( "GUIOnEventMode", 1 )
Opt( "TrayOnEventMode", 1 )
$tray_wieder = TrayCreateItem( "Wiederherstellen" )
TrayItemSetOnEvent( $tray_wieder, "wieder" )
$tray_exit = TrayCreateItem( "Exit" )
TrayItemSetOnEvent( $tray_exit, "quit" )
$main = GuiCreate("Inaktiv5.1", 371, 135,-1, -1 )
$menu = GUICtrlCreateMenu( "&Datei" )
$zeit_def = GUICtrlCreateMenuitem( "Zeit zum Shutdown", $menu )
$deinstall = GUICtrlCreateMenuitem( "Deinstallieren?", $menu )
GUICtrlSetOnEvent( $deinstall, "deinstall" )
GUICtrlSetOnEvent( $zeit_def, "einstellungen" )
$Progress_1 = GuiCtrlCreateProgress(30, 40, 310, 20)
$Button_2 = GuiCtrlCreateButton("Beenden", 220, 90, 110, 20)
GUICtrlSetOnEvent( $Button_2, "quit" )
GUISetOnEvent( $GUI_EVENT_MINIMIZE, "mini" )
GUISetOnEvent( $GUI_EVENT_CLOSE, "mini" )
GuiSetState(@SW_HIDE)
While 1
$ax = MouseGetPos(0)
$ay = MouseGetPos(1)
Sleep( 30000 ) ;alle 30 sec abfragen
$bx = MouseGetPos(0)
$by = MouseGetPos(1)
$timer = TimerInit()
While $ax = $bx And $ay = $by
$bx = MouseGetPos(0)
$by = MouseGetPos(1)
Sleep( 1000 )
$diff = TimerDiff( $timer )
GUICtrlSetData( $Progress_1, ($diff/$wait)*100 )
If $diff/$wait > 1 Then
Shutdown( 13 )
EndIf
WEnd
$timer = TimerInit()
$diff = TimerDiff( $timer )
GUICtrlSetData( $Progress_1, ($diff/$wait)*100 )
WEnd
Func quit()
Exit
EndFunc
Func mini()
GUISetState( @SW_HIDE, $main )
EndFunc
Func wieder()
GUISetState( @SW_SHOW, $main )
EndFunc
Func einstellungen()
Opt( "GUIOnEventMode", 0 )
$opt_gui = GuiCreate("Optionen", 248, 133,-1, -1 )
$Input_1 = GuiCtrlCreateInput($sleep, 40, 50, 30, 20)
$Label_2 = GuiCtrlCreateLabel("min: 10 max: 120", 40, 20, 160, 20)
$Label_3 = GuiCtrlCreateLabel("Minuten bis zum Shutdown", 80, 50, 140, 20)
$Button_4 = GuiCtrlCreateButton("OK", 80, 90, 80, 20, $BS_DEFPUSHBUTTON)
GuiSetState()
$x = 1
While $x = 1
$msg = GUIGetMsg()
If $msg = $Button_4 Then
$sleep = GUICtrlRead( $Input_1 )
$check = StringIsDigit ( $sleep )
If $check = 0 Then
MsgBox( 48, "Error", "Zahl bitte NICHT ausschreiben ;)" )
ElseIf $check = 1 Then
If $sleep > 120 or $sleep < 10 Then
MsgBox( 48, "Error", "Mindestens 10, höchstens 120 Minuten!" )
ElseIf $sleep > 9 And $sleep < 121 Then
IniWrite( @MyDocumentsDir&"\Inaktiv.ini", "Sleep", "Minuten", $sleep )
$wait = $sleep*60000
GUIDelete( $opt_gui )
Opt( "GUIOnEventMode", 1 )
$x = 2
EndIf
EndIf
EndIf
WEnd
EndFunc
Func deinstall()
$de_ans = MsgBox( 32+4, "Deinstallieren", "Möchten Sie das Programm vollständig" & @CRLF & "von Ihrem Rechner entfernen?" )
If $de_ans = 6 Then
RegRead( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Inaktiv5.1" )
If Not @error Then
RegDelete( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Inaktiv5.1" )
EndIf
FileDelete( @MyDocumentsDir&"\Inaktiv.ini" )
GUIDelete( $main )
FileDelete( @ScriptFullPath )
ElseIf $de_ans = 7 Then
MsgBox( 0, "Deinstallation", "Abgebrochen" )
EndIf
EndFunc
Joa,
mfG Noels