Code: Select all
#MaxThreadsPerHotkey 2
SetBatchLines, -1
SetMouseDelay, -1
SetDefaultMouseSpeed, 0
DllCall("QueryPerformanceFrequency", "Int64*", QPCFrequency)
F4::
MoveMouse := !MoveMouse
while (MoveMouse)
{
MouseMove, 1, 0,, R
AccuSleepBreakable(15, MoveMouse) ;lower the 15 to move the mouse faster. the time is in milliseconds
}
return
AccuSleepBreakable(TimeToSleep := 10, ByRef VarThatStopsTheSleepLoopIfTrue := 0, ByRef VarThatStopsTheSleepLoopIfTrue2 := 0, ByRef VarThatStopsTheSleepLoopIfValueChanges := 0)
{ ;time to Sleep in ms ;returns amount of time slept in ms ;Accuracy: ~2ms ;I recomended to sleep for 0.4ms less than you want since it stops sleeping when elapsed time >= TimeToSleep
DllCall("QueryPerformanceCounter", "Int64*", StartTime)
OldVarValue := VarThatStopsTheSleepLoopIfValueChanges
global QPCFrequency
TimeToSleep := (TimeToSleep/1000)*QPCFrequency
Loop
{
DllCall("Winmm\timeBeginPeriod", "UInt", 1)
DllCall("Sleep", "UInt", 1)
DllCall("Winmm\timeEndPeriod", "UInt", 1)
DllCall("QueryPerformanceCounter", "Int64*", CurrentTime)
}until ((CurrentTime - StartTime >= TimeToSleep) || (VarThatStopsTheSleepLoopIfTrue || VarThatStopsTheSleepLoopIfTrue2 || VarThatStopsTheSleepLoopIfValueChanges != OldVarValue))
return ((CurrentTime - StartTime)/QPCFrequency)*1000
}