NoMercy Posted March 3, 2010 Share Posted March 3, 2010 hi, 1st of all i`d like to point out that the following program is/will not be used as neither a KeyLogger nor a Game bot.This program records how long a keyboard button was pressed and saves it to a txt file.I have made the following code so far.. it is quite accurate but i need more accuracy if possible,I have also tried playing around with the accuracy but so far 200ms has given me the best results when it comes to more than 10sec of testing time.for example when i test it with another program for:30 sec looses 200ms60 sec looses 800ms120 sec it actually gained 200msThis is the other program im testing it with.Sleep(1000) Send("{a Down}") Sleep(10000) ;<------ Time for how long the key will be pressed. Send("{a up}")And this is the code im currently using as my program.(Note: I currently have only implemented 4 keys to test it with)expandcollapse popup$TimePressed = 0 $Accuracy = 200 while 1 If _IsPressed(41) Then $File = FileOpen(@DesktopDir&"\Record.txt", 1) do Sleep($Accuracy) $TimePressed = $TimePressed + $Accuracy $Log = "A : " & $TimePressed & @CRLF until _IsPressed(41) <> 1 FileWrite($File, $Log) FileClose($File) $TimePressed = 0 EndIf If _IsPressed(42) Then $File = FileOpen(@DesktopDir&"\Record.txt", 1) do Sleep($Accuracy) $TimePressed = $TimePressed + $Accuracy $Log = "B : " & $TimePressed & @CRLF Until _IsPressed(57) <> 1 FileWrite($File, $Log) FileClose($File) $TimePressed = 0 EndIf If _IsPressed(43) Then $File = FileOpen(@DesktopDir&"\Record.txt", 1) do Sleep($Accuracy) $TimePressed = $TimePressed + $Accuracy $Log = "C : " & $TimePressed & @CRLF Until _IsPressed(53) <> 1 FileWrite($File, $Log) FileClose($File) $TimePressed = 0 EndIf If _IsPressed(44) Then $File = FileOpen(@DesktopDir&"\Record.txt", 1) do Sleep($Accuracy) $TimePressed = $TimePressed + $Accuracy $Log = "D : " & $TimePressed & @CRLF Until _IsPressed(53) <> 1 FileWrite($File, $Log) FileClose($File) $TimePressed = 0 EndIf wend Func _IsPressed($hexKey) ;Key capture function. Most vital part of the script. Local $aR, $bRv $hexKey = '0x' & $hexKey $aR = DllCall("user32", "int", "GetAsyncKeyState", "int", $hexKey) If $aR[0] <> 0 Then $bRv = 1 Else $bRv = 0 EndIf Return $bRv EndFuncI have also tried to do this with the HotkeySet method but didnt have any luck...Any help would be appreciated.-Tnx. Link to comment Share on other sites More sharing options...
martin Posted March 3, 2010 Share Posted March 3, 2010 You could do something like this and get and accuracy of say 20ms #include <misc.au3> $accuracy = 20 While 1 If _IsPressed("41") Then $Start = TimerInit() While _IsPressed("41") Sleep($accuarcy) WEnd $Log = "A:" & TimerDiff($Start) & @CRLF EndIf WEnd Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
NoMercy Posted March 3, 2010 Author Share Posted March 3, 2010 (edited) ok this did actually helped alot. i have rounded it up and now it gives an extra 10-15ms : A:10010 A:60013 A:120016 added a -10 to the value and now it got: A:10000 A:60003 A:120005 which i guess is pretty good. now all i need is another program that reads the txt and automatically generates the code for me. if i have troubles ill post it in a couple of hours... got some work to do now. Thank you. Edited March 3, 2010 by NoMercy Link to comment Share on other sites More sharing options...
NoMercy Posted March 4, 2010 Author Share Posted March 4, 2010 If someone has a better more efficient code than this id be more than happy to see it, cus in the long run this program is not as accurate as it might seem. Thank you. Link to comment Share on other sites More sharing options...
martin Posted March 4, 2010 Share Posted March 4, 2010 If someone has a better more efficient code than this id be more than happy to see it, cus in the long run this program is not as accurate as it might seem.Thank you.How do you know it is inaccurate? Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now