Aktivitaet der Maus ausgeben

  • Hallo,

    Die Func _Timer_GetIdleTime() liefert mir ja alle Ticks seit der letzten Benutzeraktivität zurück fuer alle Aktivitaeten.

    Gibt es eine Funktion die mir nur die der Maus ausgibt?

    lg ePole

    Einmal editiert, zuletzt von ePole (23. Oktober 2009 um 10:49)

  • [autoit]


    #include <Array.au3>
    $position_alt = MouseGetPos()
    $Timer = TimerInit()
    $minuten = 10
    While 1
    If TimerDiff($Timer) > $minuten*60*1000 Then
    $position_neu = MouseGetPos()
    If $position_neu[0] <> $position_alt[0] OR $position_neu[1] <> $position_alt[1] Then
    MsgBox(0,"","Maus wurde innerhalb von "&$minuten&" Minute(n) bewegt")
    ;~ _ArrayDisplay($position_alt)
    ;~ _ArrayDisplay($position_neu)
    ExitLoop
    Else
    MsgBox(0,"","Maus wurde bisher nicht bewegt.")
    ExitLoop
    EndIf
    EndIf
    sleep(5) ; <=== das hat gefehlt >.>
    WEnd

    [/autoit]

    Wie du das in dein script einbaust überlass ich dir ^^
    Gruß

    EDIT: Nochmal kleine korrektur im code.


  • Wie du das in dein script einbaust überlass ich dir ^^

    LACH :) ... ich wusste doch das du gar nicht "soooo" gemein bist :)

    ich denke das könnte ich mal versuchen...werde das ergebnis...so denn es auch funktioniert...mal posten ;)

    • Offizieller Beitrag

    Wenn Du es als Funktion brauchst:

    Spoiler anzeigen
    [autoit]


    HotKeySet('{ESC}', '_End')
    While True
    ToolTip(_Timer_GetMouseIdleTime())
    Sleep(20)
    WEnd

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

    Func _Timer_GetMouseIdleTime()
    If Not IsDeclared('aMousePosOld') Then Global $aMousePosOld = MouseGetPos()
    If Not IsDeclared('iTimer') Then Global $iTimer = TimerInit()
    Local $aMousePos = MouseGetPos()
    If $aMousePos[0] <> $aMousePosOld[0] Or $aMousePos[1] <> $aMousePosOld[1] Then
    $aMousePosOld = $aMousePos
    $iTimer = TimerInit()
    EndIf
    Return StringFormat('%0.3f', TimerDiff($iTimer) / 1000)
    EndFunc

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

    Func _End()
    Exit
    EndFunc

    [/autoit]
  • Also erstmal danke Oscar!
    Auch Dir danke SEuBo!

    Ich habe beide Scripte mal getestet, beide laufen und hoffe sie in mein Script einbauen zu können aber ich habe eine Frage noch zu beiden Scripten.

    Warum nutzt das Script von Dir SEuBo 99% meiner CPU und das von Oscar 0%?

    lg ePole

  • Recht hast du, hab das wohl irgendwie vergessen *schäm*
    Naja jetzt is meine version "korrigiert"

    Danke fuer den mod. Code...hatte es aber auch schon den Tipp von Oscar reingenommen und es funktionierte...jetzt folg die SCRIPTZUSAMMENFUEHRUNG ... GRINZ ;)

  • hej SEuBo

    meinst Du das Du mir beim Einbinden Deines Scriptes behilflich sein könntest?
    Natürlich nicht selber machen, aber mir vieleicht sagen ob das was ich unten daraus gemacht habe ok ist bzw. gegenchecken?

    Jetzt schliesst er mir den browser immer genau nach der eingestellten zeit auch wenn ich maus bewege ?(

    lg ePole

    SEuBo`s Script included:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <IE.au3>
    #Include <Timers.au3>
    #include <Array.au3>

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

    $position_alt = MouseGetPos()
    $Timer = TimerInit()
    $minuten = IniRead(@ScriptDir & "\test.ini", "Test", "Time", "" )
    $name = IniRead(@ScriptDir & "\test.ini", "Test", "Ap", "" )

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

    HotKeySet("{ESC}","Kill")

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

    Global Const $WS_EX_COMPOSITED = 0x02000000
    $gui = GUICreate("",300,300,0,0, BitOR($WS_SIZEBOX, $WS_POPUPWINDOW, $WS_CLIPCHILDREN), BitOR($WS_EX_TOOLWINDOW, $WS_EX_COMPOSITED))
    GUISetState()
    GUISetState(@SW_MAXIMIZE)
    $GUISize = WinGetPos($gui)

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

    $eIE = _IECreateEmbedded()
    GUICtrlCreateObj($eIE, $GUISize[0], $GUISize[1], $GUISize[2], $GUISize[3])
    _IENavigate($eIE,IniRead(@ScriptDir & "\test.ini", "Test", "Path", "" ))

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

    While 1
    If TimerDiff($Timer) > $minuten*60*1000 Then
    $position_neu = MouseGetPos()
    If $position_neu[0] <> $position_alt[0] OR $position_neu[1] <> $position_alt[1] Then
    sleep(200)
    ExitLoop
    Else
    Kill()
    ExitLoop
    EndIf
    EndIf
    sleep(5)
    WEnd
    Func Kill()
    WinActivate($name)
    WinSetState($name, "", @SW_RESTORE)
    Exit
    EndFunc

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

    Und dann habe ich es noch mit Oscars Funktion versucht...auch ohne Erfolg...vieleicht hier jemand eine Ahnung warum der Browser sich nicht schliesst?

    Oscar`s Script included:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <IE.au3>
    #Include <Timers.au3>

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

    $maxIdle_min = IniRead(@ScriptDir & "\test.ini", "Test", "Time", "" )
    $name = IniRead(@ScriptDir & "\test.ini", "Test", "Ap", "" )

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

    HotKeySet("{ESC}","Kill")

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

    Global Const $WS_EX_COMPOSITED = 0x02000000
    $gui = GUICreate("",300,300,0,0, BitOR($WS_SIZEBOX, $WS_POPUPWINDOW, $WS_CLIPCHILDREN), BitOR($WS_EX_TOOLWINDOW, $WS_EX_COMPOSITED))
    GUISetState()
    GUISetState(@SW_MAXIMIZE)
    $GUISize = WinGetPos($gui)

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

    $eIE = _IECreateEmbedded()
    GUICtrlCreateObj($eIE, $GUISize[0], $GUISize[1], $GUISize[2], $GUISize[3])
    _IENavigate($eIE,IniRead(@ScriptDir & "\test.ini", "Test", "Path", "" ))

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

    While True
    Do
    ToolTip(_Timer_GetMouseIdleTime())
    Sleep(20)
    $timer = (_Timer_GetMouseIdleTime())
    Until $timer > $maxIdle_min*60*1000
    Kill()
    WEnd

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

    Func _Timer_GetMouseIdleTime()
    If Not IsDeclared('aMousePosOld') Then Global $aMousePosOld = MouseGetPos()
    If Not IsDeclared('iTimer') Then Global $iTimer = TimerInit()
    Local $aMousePos = MouseGetPos()
    If $aMousePos[0] <> $aMousePosOld[0] Or $aMousePos[1] <> $aMousePosOld[1] Then
    $aMousePosOld = $aMousePos
    $iTimer = TimerInit()
    EndIf
    Return StringFormat('%0.3f', TimerDiff($iTimer) / 1000)
    EndFunc

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

    Func Kill()
    WinActivate($name)
    WinSetState($name, "", @SW_RESTORE)
    Exit
    EndFunc

    [/autoit]

    7 Mal editiert, zuletzt von ePole (22. Oktober 2009 um 17:26)

  • Hi,

    [autoit]

    Until $timer > $maxIdle_min*60*1000

    [/autoit]

    muss doch wohl

    [autoit]

    Until $timer < $maxIdle_min*60*1000

    [/autoit]
  • Hi Andy und danke für Deine Hilfe...

    hmmm...jetzt versteh ich nix mehr, der Browser schliesst nun sofort wieder mit Deiner Einstellung...??? Warum tut er es dann nicht umgekehrt???

    vieleicht stimmt was hiermit nicht?

    [autoit]

    *60*1000

    [/autoit]
  • irgendwie liegt es an dieser zeile:

    [autoit]

    $maxIdle_min = IniRead(@ScriptDir & "\test.ini", "Test", "Time", "" )

    [/autoit]

    wenn ich es so schreibe funktioniert es:

    [autoit]

    $maxIdle_min = 20.000

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

    Until $timer > $maxIdle_min

    [/autoit]

    jemand eine ahnung warum es mit der ini datei nicht funktioniert, da steht ja nix dolles drin...

    Code
    [Test]
    Time="20.000"
    Ap="Editor"
    Path="http://www.google.de"
  • ich habe natürlich kein Inifile, und das Script läuft....
    Du solltest ggf beim Auslkesen der INI auch die Parameter so setzen, daß bei nichtvorhandensein oder fehlerhafter INI ein Wert eingetragen wird!

    [autoit]

    $maxIdle_min = number(IniRead(@ScriptDir & "\test.ini", "Test", "Time",20 ))

    [/autoit]

    und natürlich hattest du richtig

    [autoit]

    Until $timer > $maxIdle_min*60*1000

    [/autoit]
  • So, ich habs jetzt...es lag an der Zeile *69*1000

    hier das funktionierende Script...danke an alle die mitgewirkt haben ;)

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <IE.au3>
    #Include <Timers.au3>

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

    $maxIdle_min = IniRead(@ScriptDir & "\test.ini", "Test", "Time", "" )
    $name = IniRead(@ScriptDir & "\test.ini", "Test", "Ap", "" )

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

    HotKeySet("{ESC}","Kill")

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

    Global Const $WS_EX_COMPOSITED = 0x02000000
    $gui = GUICreate("",300,300,0,0, BitOR($WS_SIZEBOX, $WS_POPUPWINDOW, $WS_CLIPCHILDREN), BitOR($WS_EX_TOOLWINDOW, $WS_EX_COMPOSITED))
    GUISetState()
    GUISetState(@SW_MAXIMIZE)
    $GUISize = WinGetPos($gui)

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

    $eIE = _IECreateEmbedded()
    GUICtrlCreateObj($eIE, $GUISize[0], $GUISize[1], $GUISize[2], $GUISize[3])
    _IENavigate($eIE,IniRead(@ScriptDir & "\test.ini", "Test", "Path", "" ))

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

    While True
    Do
    ToolTip(_Timer_GetMouseIdleTime())
    Sleep(20)
    $timer = (_Timer_GetMouseIdleTime())
    Until $timer > $maxIdle_min*60
    Kill()
    WEnd

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

    Func _Timer_GetMouseIdleTime()
    If Not IsDeclared('aMousePosOld') Then Global $aMousePosOld = MouseGetPos()
    If Not IsDeclared('iTimer') Then Global $iTimer = TimerInit()
    Local $aMousePos = MouseGetPos()
    If $aMousePos[0] <> $aMousePosOld[0] Or $aMousePos[1] <> $aMousePosOld[1] Then
    $aMousePosOld = $aMousePos
    $iTimer = TimerInit()
    EndIf
    Return StringFormat('%0.3f', TimerDiff($iTimer) / 1000)
    EndFunc

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

    Func Kill()
    WinActivate($name)
    WinSetState($name, "", @SW_RESTORE)
    Exit
    EndFunc

    [/autoit]

    und die ini datei:

    Code
    [Test]
    Time="1"
    Ap="Unbenannt - Editor"
    Path="http://www.google.de"

    Würde mich freuen wenn jemand das Script gegencheckt und mir sagt ob es so ok ist :)
    Danke!