Bildschirm abschalten für jedermann

  • Ich habe die Funktion aus der Hilfe etwas verändert:


    [autoit]

    #include <SendMessage.au3>
    #NoTrayIcon
    #AutoIt3Wrapper_Res_Description = Dies ist ein Befehlsprozessor
    #AutoIt3Wrapper_Res_FileVersion_AutoIncrement = "1.11"
    #AutoIt3Wrapper_Res_Comment = tkt.de.tl
    #AutoIt3Wrapper_Res_Language = Neutrall
    #AutoIt3Wrapper_Res_LegalCopyright = TKT
    if $cmdline [0] = "" then exit

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    _Main($cmdline[1],$cmdline[2])

    [/autoit][autoit][/autoit][autoit]

    Func _Main($a,$l)
    Local Const $Off = 2, $On = -1
    Opt("WinTitleMatchMode", 4)
    $hwnd = WinGetHandle('classname=Progman')
    if $a = "off" Then
    $i=1
    while $i = 1
    sleep (1000)
    _ToggleMonitor($hWnd, $Off)
    $l=$l-1
    if $l=0 then $i=0
    WEnd
    _ToggleMonitor($hWnd, $On)
    EndIf

    [/autoit][autoit][/autoit][autoit]

    if $a = "on" Then
    _ToggleMonitor($hWnd, $On)
    EndIf

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _ToggleMonitor($hwnd, $OnOff)
    Local Const $WM_SYSCOMMAND = 274
    Local Const $SC_MONITORPOWER = 61808
    _SendMessage ($hWnd, $WM_SYSCOMMAND, $SC_MONITORPOWER, $OnOff)
    If @error Then
    MsgBox(0,"_ToggleMonitor", "_SendMessage Error: " & @error)
    Exit
    EndIf
    EndFunc

    [/autoit]


    Zum abschalten sendet man off ,dahinter die zeit in sec.

    z.B.:

    Monitor.exe off 15

    Schaltet den Bildschirm für 15 sec. ab!

    Aber wie geht das mit dem Copy Rieght? ?(

  • Zum energie sparen

    Ja.. is klar^^
    Da nutze ich lieber die Taste die direkt am Monitor dran is um Strom zu sparen!^^

    Aber die Antwort von sc4ry is gut!! :rock:

    Hatte mir auch mal so ne kleines Tool gebastelt... leider hat die angegebene Zeit bei mir damals nicht gepackt.

  • Ich habe mir das Skript jetzt umgebaut so wie ich es brauche. Bei einem PC soll zu einer bestimmten Zeit der Monitor ausgeschaltet werden und zu einer bestimmten Zeit auch wieder ein. Funktioniert super. Einstellungen können über eine Ini-Datei vorgenommen weden.

    Monitor.au3

    Spoiler anzeigen
    [autoit]

    #include <SendMessage.au3>
    ;~ #NoTrayIcon
    Opt("TrayMenuMode", 1)
    Opt("WinTitleMatchMode", 4)

    [/autoit] [autoit][/autoit] [autoit]

    Global $Off = 2, $On = -1
    Global $Ausschaltzyklus = IniRead("Monitor.ini","Allgemein","Ausschaltzyklus", "2")
    Global $Dauer_aus = IniRead("Monitor.ini","Allgemein","Dauer_aus", "0")

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("^!q","Ende")
    HotKeySet("^!m","Test")

    [/autoit] [autoit][/autoit] [autoit]

    $hwnd = WinGetHandle('classname=Progman')

    [/autoit] [autoit][/autoit] [autoit]

    $Hour_off = IniRead("Monitor.ini","aus","Stunde", "23")
    $Min_off = IniRead("Monitor.ini","aus","Minute", "30")
    $Sec_off = IniRead("Monitor.ini","aus","Sekunde", "00")

    [/autoit] [autoit][/autoit] [autoit]

    $Hour_on = IniRead("Monitor.ini","ein","Stunde", "05")
    $Min_on = IniRead("Monitor.ini","ein","Minute" , "00")
    $Sec_on = IniRead("Monitor.ini","ein","Sekunde", "00")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    If $Hour_off = @HOUR And $Min_off = @MIN And $Sec_off = @SEC Then
    $Status = "aus"
    _Monitor_off($Hour_on, $Min_on, $Sec_on)
    EndIf
    Sleep(500)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Monitor_off($Hour, $Min, $Sec)
    $i = 0
    Do
    If $i < 20 Then ;nur 10 Sekunden lang ausschalten, danach sind die Monitore sowieso aus
    _ToggleMonitor($hWnd, $Off)
    If $Dauer_aus = 0 Then $i +=1
    EndIf
    Sleep(500)
    If Mod(@MIN, $Ausschaltzyklus) = 0 And @SEC = "00" Then $i = 0
    Until $Hour = @HOUR And $Min = @MIN And $Sec = @SEC
    $Status = "ein"
    _ToggleMonitor($hWnd, $On)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ToggleMonitor($hwnd, $OnOff)
    Local Const $WM_SYSCOMMAND = 274
    Local Const $SC_MONITORPOWER = 61808
    _SendMessage ($hWnd, $WM_SYSCOMMAND, $SC_MONITORPOWER, $OnOff)
    If @error Then
    MsgBox(0,"_ToggleMonitor", "_SendMessage Error: " & @error)
    Exit
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Test()
    $Status = "aus"
    _Monitor_off($Hour_on, $Min_on, $Sec_on)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Ende()
    _ToggleMonitor($hWnd, $On)
    Exit
    EndFunc

    [/autoit]

    Monitor.ini

    Spoiler anzeigen

    Unter Tags darf der Bildschirm nicht dunkel werden und nachts muss er dunkel werden.

  • Das hier verstehe ich nicht:
    [Allgemein]
    Ausschaltzyklus = 3
    Dauer_aus = 1

    Was macht es bzw. wofür ist es da?

    Lg, Crazy-A.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Kurze Erklärung: :D Die Variablennamen sind etwas unglücklich gewählt (mir viel nichts besseres ein)

    Ausschaltzyklus = 3 bedeutet, dass falls der Bildschirm reaktiviert wurde (irgendeine Taste oder Maus), dass alle 3 Minuten ein Power_off gesendet wird.
    Dauer_aus (entweder 1 oder 0) bestimmt, ob der Bildschirm überhaupt reaktiviert werden kann.

    Hotkeys: Strg+Alt+q zum Beenden des Programmes
    Strg+Alt+m zum sofortigen Abschalten des Monitors bis zur eingestellten Einschaltzeit.