Wenn Maus nicht bewegt wird, eine Func starten lassen

  • Hallo würde mir mal gerne so ne kleine spielerei in autoit basteln und zwar wenn ich die maus z.b. 5min lange net bewege dass dann die leds von der NUM CAPSLOCK und Rollen in einer bestimmten reihenfolge blinken...des mit dem blinken habe ich bereits, aber wie registriert das Skript dass die Maus 5min nicht bewegt worden ist, und wenn sie bewegt wird die func sich beendet, Script muss aber WEITER laufen, dass es danach auch nochmal funktioniert...
    müsste doch irgendwie mit GetMousepos gehen dass ich des abfrage und er dann vergleicht ob die gespeicherte pos der aktuellen entspricht

    denkt euch bestimmt für was braucht man denn das? - aber ich finds mal ganz witzig und hat mich schon immer mal interessiert wie das mit der maus funktioniert

  • Geht genau so, wie du es gesagt hast^^:

    [autoit]

    $pos1 = MouseGetPos()
    Sleep(5000); Hier nur 5 Sekunden^^
    $pos2 = MouseGetPos()
    If $pos1[0] = $pos2[0] And $pos1[1] = $pos2[1] Then...

    [/autoit]
  • hm ansatz ist nicht schlecht, aber funktioniert nicht wirklich

    also die wesentlichen punkte hiermal:
    1. soll ab windowsstart im hintergrund laufen
    2. das skript soll meinetwegen alle 5 sek abfragen ob die mausposition die selbe ist wie die abgefragte vor 5 sekunden
    3. wenn es nach 5min oder für testzwecke jetzt nach 20 sek keine änderung gab soll mein led blinken anfangen, (während es blinkt sollte allerdings das abfragen der position weiterlaufen, damit es aufhört sobald ich die maus wieder bewege.

    vlt versteht es sich jetzt einfacher

  • hm ansatz ist nicht schlecht, aber funktioniert nicht wirklich

    also die wesentlichen punkte hiermal:
    1. soll ab windowsstart im hintergrund laufen
    2. das skript soll meinetwegen alle 5 sek abfragen ob die mausposition die selbe ist wie die abgefragte vor 5 sekunden
    3. wenn es nach 5min oder für testzwecke jetzt nach 20 sek keine änderung gab soll mein led blinken anfangen, (während es blinkt sollte allerdings das abfragen der position weiterlaufen, damit es aufhört sobald ich die maus wieder bewege.

    vlt versteht es sich jetzt einfacher

    Da musst du das programm in dein Autostart verzeichniss machen

    Habs nochmal versucht:

    Spoiler anzeigen
    [autoit]

    Global $pos1, $pos2
    While 1
    _PosAbfrage()
    If $pos1[0] = $pos2[0] And $pos1[1] = $pos2[1] Then
    _PosAbfrage()
    If $pos1[0] = $pos2[0] And $pos1[1] = $pos2[1] Then
    _PosAbfrage()
    If $pos1[0] = $pos2[0] And $pos1[1] = $pos2[1] Then
    _PosAbfrage()
    If $pos1[0] = $pos2[0] And $pos1[1] = $pos2[1] Then
    ExitLoop
    Else
    MsgBox(64, "", "Nein4")
    EndIf
    Else
    MsgBox(64, "", "Nein3")
    EndIf
    Else
    MsgBox(64, "", "Nein2")
    EndIf
    Else
    MsgBox(64, "", "Nein1")
    EndIf
    WEnd
    Send("{NUMLOCK off}")
    Sleep(100)
    Send("{CAPSLOCK on}")
    Sleep(100)
    Send("{NUMLOCK on}")
    Sleep(100)
    Send("{CAPSLOCK off}")
    Sleep(100)

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

    Func _PosAbfrage()
    $pos1 = MouseGetPos()
    Sleep(5000)
    $pos2 = MouseGetPos()
    EndFunc

    [/autoit]


    /edit: Verkürzt^^
    MfG xXTobi93Xx

  • Spoiler anzeigen
    [autoit]

    While True
    $count = 0
    $timer = TimerInit()
    $pos = MouseGetPos()
    While True
    If TimerDiff($timer) >= 10000 Then
    $count += 1
    $timer = TimerInit()
    $pos2 = MouseGetPos()
    If $pos[0] <> $pos2[0] Or $pos[1] <> $pos2[1] Then ExitLoop
    EndIf
    If $count = 30 Then _blink()
    Sleep(100)
    WEnd
    WEnd

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

    Func _blink()
    Send("{NUMLOCK off}")
    Sleep(100)
    Send("{CAPSLOCK on}")
    Sleep(100)
    Send("{NUMLOCK on}")
    Sleep(100)
    Send("{CAPSLOCK off}")
    EndFunc ;==>_blink

    [/autoit]
  • So hab auch mal was Probiert

    Spoiler anzeigen
    [autoit]


    Global $timer=0
    AdlibEnable("testen","1000")
    While 1
    $pos_alt=MouseGetPos()
    $timer=TimerInit()
    while 1
    $pos=MouseGetPos()
    if $pos_alt[0]+10<$pos[0] or $pos_alt[0]-10>$pos[0] or $pos_alt[1]+10<$pos[1] or $pos_alt[1]-10>$pos[1] then ;mouse wurde bewegt
    ExitLoop
    EndIf
    WEnd
    WEnd

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

    Func testen()
    if TimerDiff($timer) > 300000 then;5 Minuten
    Send("{NUMLOCK off}")
    Sleep(100)
    Send("{CAPSLOCK on}")
    EndIf
    EndFunc

    [/autoit]
  • Wenn man nicht nur die Maus, sondern auch jede Tastaturkommandos haben will (so wie beim Bildschirmschoner),
    dann kann man folgende Funktion verwenden:

    [autoit]

    #include <Timers.au3>

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

    Global $iTimer

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

    While 1
    $iTimer = _Timer_GetIdleTime()
    Select
    Case $iTimer < 5000
    ToolTip("Mache nichts!" & @LF & "Keine Eingabe seit " & Round($iTimer / 1000) & " Sekunden")
    Case Else
    ToolTip("5 Sekunden überschritten.." & @LF & "Keine Eingabe seit " & Round($iTimer / 1000) & " Sekunden")
    EndSelect
    Sleep(500)
    WEnd

    [/autoit]

    lgE

  • danke für die vielen antworten ich benutzte jetz das von qaywsx

    funktioniert auch schonmal gut, aber wie beendet er die schleife wenn ich die maus wieber bewege...
    man müsste also das gleiche nochmal in die func testen einbauen, bloß ich bekomme das nicht wirklich hin.

    3 Mal editiert, zuletzt von Reaker (29. Juni 2009 um 20:34)