Timer / Bedingung

  • Guten Morgen!

    Ich habe ein kleines Programm gebastelt für meinen Chef.
    Dieses Programm bewirkt, das sie Maus sich alle xx Minuten ein Stück bewegt.
    Anlass war, das er verhindern möchte das sich der Bildschirmschoner immer aktiviert.
    (die Rechner sind so administriert, das er den täglich neu abschalten müsste, darauf hat er keinen Bock)

    Dieses Programm wiederholt sich solange, bis man es mit der Func "Esc" schliesst.

    Soweit so gut.

    Allerdings bin ich mit der Tatsache unzufrieden, das die Maus sich nun wirklich alle xx Minuten mal kurz bewegt, egal ob man gerade aktiv oder inaktiv am Rechner sitzt.
    Ich hätte gerne das mein Programm vor jedem erneuten Durchlauf das überprüft.
    Mein Grundgedanke war - das der Bildschirmschoner ja auch nur anspringt, wenn sich nichts tut... ob dieses Programm das nicht ebenso handhaben könnte.
    Allerdings hab ich noch nichts gefunden im www das in die Richtung geht...

    3 Mal editiert, zuletzt von ofcourse (13. August 2009 um 13:26)

  • Ok, ich bekomms doch nicht hin das zu integrieren :(

    (Ich weiß, ungeduldige Anfängerin... aber ja, that's me!)

    Der bisherige Code:

    Spoiler anzeigen

    ; MouseMover


    HotKeySet("{Esc}", "terminate")


    ToolTip("MouseMover ----- select Target!",50,400)
    Sleep(1000)
    ToolTip("MouseMover I---- select Target!",50,400)
    Sleep(1000)
    ToolTip("MouseMover II--- select Target!",50,400)
    Sleep(1000)
    ToolTip("MouseMover III-- select Target!",50,400)
    Sleep(1000)
    ToolTip("MouseMover IIII- select Target!",50,400)
    Sleep(1000)
    ToolTip("MouseMover IIIII select Target!",50,400)
    Sleep(1000)

    $pos = MouseGetPos()
    ToolTip("MouseMover - Target at x:" &$pos[0] & " y:" & $pos[1],50,400)
    Sleep(3000)
    ToolTip("MouseMover - ESC to exit",50,400)

    While 1

    If $pos[0]<10 Then
    $pos[0]=10
    EndIf

    If $pos[1]<10 Then
    $pos[1]=10
    EndIf

    sleep(100000)
    ToolTip("MouseMover - repositioning to x:" &$pos[0]+10 & " y:" & $pos[1]-10,50,400)
    MouseMove($pos[0]+10,$pos[1]-10,50)
    ToolTip("MouseMover - ESC to exit",50,400)

    sleep(100000)
    ToolTip("MouseMover - repositioning to x:" &$pos[0]+10 & " y:" & $pos[1]+10,50,400)
    MouseMove($pos[0]+10,$pos[1]+10,50)
    ToolTip("MouseMover - ESC to exit",50,400)

    sleep(100000)
    ToolTip("MouseMover - repositioning to x:" &$pos[0]-10 & " y:" & $pos[1]+10,50,400)
    MouseMove($pos[0]-10,$pos[1]+10,50)
    ToolTip("MouseMover - ESC to exit",50,400)

    sleep(100000)
    ToolTip("MouseMover - repositioning to x:" &$pos[0]-10 & " y:" & $pos[1]-10,50,400)
    MouseMove($pos[0]-10,$pos[1]-10,50)
    ToolTip("MouseMover - ESC to exit",50,400)
    WEnd

    Func terminate()
    Exit
    EndFunc

  • Hätte es so gemacht:

    Spoiler anzeigen
    [autoit]

    #include <Timers.au3>

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

    HotKeySet("{Esc}", "terminate")

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

    Global $Zeitvorgabe = 10 ; Sekunden
    Local $Time

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

    While 1
    $Time = _Timer_GetIdleTime()
    If $Time > $Zeitvorgabe * 1000 Then MouseMove(Random(0, @DesktopWidth, 1), Random(0, @DesktopHeight, 1))
    Sleep(1000)
    WEnd

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

    Func terminate()
    Exit
    EndFunc ;==>terminate

    [/autoit]
  • Hallo, noch ein Vorschlag: Stell vor der Mausbewegung die aktuelle Position der Maus fest, dann eine sehr schnelle Mausbewegung und gleich wieder eine Mausbewegung auf die "alte" Postion. So sieht man die Mausbewegung kaum.

    [autoit]


    $pos = MouseGetPos()
    MouseMove($pos[0]+10, $pos[1]+10, 0)
    MouseMove($pos[0] , $pos[1], 0)

    [/autoit]

    Gruß

    Steffen

  • Hallo, noch ein Vorschlag: Stell vor der Mausbewegung die aktuelle Position der Maus fest, dann eine sehr schnelle Mausbewegung und gleich wieder eine Mausbewegung auf die "alte" Postion. So sieht man die Mausbewegung kaum.

    [autoit]


    $pos = MouseGetPos()
    MouseMove($pos[0]+10, $pos[1]+10, 0)
    MouseMove($pos[0] , $pos[1], 0)

    [/autoit]

    Gruß

    Steffen

    Auch eine sehr schöne Idee!
    Danke !!!

    • Offizieller Beitrag

    Wozu überhaupt die Idlezeit abfragen?
    Setz doch einfach die Idletime entsprechend hoch (z.B. auf 10 Stunden). Wenn diese Einstellungen beim Neustart verschwunden sind, füge einfach dieses Skript in den Autostart ein:

    [autoit]

    #Include <WinAPI.au3>
    Const $SPI_SETSCREENSAVETIMEOUT = 15
    Local $timeout = 36000 ; Angabe in Sekunden
    _WinAPI_SystemParametersInfo($SPI_SETSCREENSAVETIMEOUT, $timeout, 0, 0)

    [/autoit]


    Eigentlich sollte sich der Bildschirmschoner mit dieser Funktion und der Message: SPI_SETSCREENSAVEACTIVE direkt deaktivieren lassen, das konnte ich bisher aber nicht erreichen. Obwohl die Funktion Erfolg meldete.