Jump to content

Recommended Posts

Posted

Greetings people !

Can you guys help me out im trying to make an adlib function that detects if mouse pointer has been in the same location for more than 10 seconds . The thing is it has to be an adlibregister function so that my script continues to run in paralel and not interupt the main script for to long .

I thought adlibregister would be the best solution to build this but is there any other way to get mouse idle duration or something like that from the system ? Or any other way you might know ?

Posted (edited)

Are you trying to detect idle time or just mouse movement?

im trying to detect if the mouse is not moving for more than 10 seconds so that I can send some commands that will unstuck my script .

Edited by Raizeno
Posted

It might be better to find out why your script freezes.  What are you trying to automate / control?

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Posted

Ok ill recheck the whole script but wanted to do this to be like a debugging function . Im trying to automate an android emulator .

Posted (edited)

Maybe something like:

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

Global $iTimer = 0

AdlibRegister("_MouseIdle")

While 1
    Sleep(10)
WEnd

Func _MouseIdle()
    Local $iSec = 10
    $aLastPos = MouseGetPos()
    Sleep(1000)
    $aCurrPos = MouseGetPos()
    If $aLastPos[0] = $aCurrPos[0] And $aLastPos[1] = $aCurrPos[1] Then $tStill = TimerInit()
    While $aCurrPos[0] = $aLastPos[0] And $aCurrPos[1] = $aLastPos[1]
        If $iTimer = $iSec Then
            ConsoleWrite("Mouse in idle for..." & $iSec & " sec! IDLE TIME!" & @CR)
            $iTimer = 0
        EndIf
        If TimerDiff($tStill) > 1000 Then
            $aCurrPos = MouseGetPos()
            $tStill = TimerInit()
            $iTimer += 1
            If $iTimer <> $iSec Then ConsoleWrite("Mouse in idle for..." & $iTimer & " sec" & @CR)
        EndIf
        Sleep(10)
    WEnd
    ConsoleWrite("Mouse is moving: X: " & $aCurrPos[0] & " Y: " & $aCurrPos[1] & @CR)
    $iTimer = 0
EndFunc   ;==>_MouseIdle

Func _Exit()
    Exit
EndFunc   ;==>_Exit
Edited by johnmcloud
Posted

Check out _IdleTime() in my signature.

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Posted

 

Maybe something like:

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

Global $iTimer = 0

AdlibRegister("_MouseIdle")

While 1
    Sleep(10)
WEnd

Func _MouseIdle()
    Local $iSec = 10
    $aLastPos = MouseGetPos()
    Sleep(1000)
    $aCurrPos = MouseGetPos()
    If $aLastPos[0] = $aCurrPos[0] And $aLastPos[1] = $aCurrPos[1] Then $tStill = TimerInit()
    While $aCurrPos[0] = $aLastPos[0] And $aCurrPos[1] = $aLastPos[1]
        If $iTimer = $iSec Then
            ConsoleWrite("Mouse in idle for..." & $iSec & " sec! IDLE TIME!" & @CR)
            $iTimer = 0
        EndIf
        If TimerDiff($tStill) > 1000 Then
            $aCurrPos = MouseGetPos()
            $tStill = TimerInit()
            $iTimer += 1
            If $iTimer <> $iSec Then ConsoleWrite("Mouse in idle for..." & $iTimer & " sec" & @CR)
        EndIf
        Sleep(10)
    WEnd
    ConsoleWrite("Mouse is moving: X: " & $aCurrPos[0] & " Y: " & $aCurrPos[1] & @CR)
    $iTimer = 0
EndFunc   ;==>_MouseIdle

Func _Exit()
    Exit
EndFunc   ;==>_Exit

yeah nice ideea but i cant have something with sleep in an adlibregister() cause that will make my script pause forever

Posted (edited)

Check out _IdleTime() in my signature.

Thank you very much Guinness ! After looking trought that post it seem that all i needed was something like

#include <Timers.au3>
_Timer_GetIdleTime ( )


adlibregister("idle")

 func idle()
    $iIdleTime = _Timer_GetIdleTime()
    $iIdleTime = $iIdleTime / 1000
    If $iIdleTime >= 10 Then
        ConsoleWrite('$iIdleTime >= 10 '& @SEC &@CRLF)
        Enter()
     EndIf
endfunc
Edited by Raizeno
Posted

And what is the app you are running in the Android emulator? I'm curious on how you do that. Looking to learn here.

well i'm trying to automate the android emulator itself to move trough different accounts

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...