📄 cwnd_gouzi.bas
字号:
Attribute VB_Name = "cwnd_gouzi"
Option Explicit
Public Declare Function SetWindowsHookEx Lib "user32" _
Alias "SetWindowsHookExA" _
(ByVal idHook As Long, _
ByVal lpfn As Long, _
ByVal hmod As Long, _
ByVal dwThreadId As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" _
(ByVal hHook As Long, _
ByVal nCode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pDest As Any, _
pSource As Any, _
ByVal cb As Long)
Public Declare Function GetKeyboardState Lib "user32" _
(kbArray As KeyboardBytes) As Long
Public Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Integer
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Public m_hDllKbdHook As Long 'public variable holding
'the handle to the hook procedure
Public Const WH_KEYBOARD_LL As Long = 13 'enables monitoring of keyboard
Public Const WH_KEYBOARD As Long = 2
'input events about to be posted
'in a thread input queue
Private Const HC_ACTION As Long = 0 'wParam and lParam parameters
'contain information about a
'keyboard message
Public Const KEYEVENTF_EXTENDEDKEY = &H1
Public Const KEYEVENTF_KEYUP = &H2
Private Const VK_CAPITAL As Long = &H14
Private Const VK_NUMLOCK As Long = &H90
Private Const VK_SCROLL As Long = &H91
Private Const VK_F1 = &H70
Private Const VK_F2 = &H71
Private Const VK_F3 = &H72
Private Const VK_F4 = &H73
Private Const VK_F5 = &H74
Private Const VK_F6 = &H75
Private Const VK_F7 = &H76
Private Const VK_F8 = &H77
Private Const VK_F9 = &H78
Private Const VK_F10 = &H79 ' This example uses F10
Private Const VK_F11 = &H7A ' This example uses F11
Private Const VK_F12 = &H7B ' This example uses F12
Private Const VK_Num0 = &H60
Private Const VK_Num1 = &H61
Private Const VK_Num2 = &H62
Private Const VK_Num3 = &H63
Private Const VK_Num4 = &H64
Private Const VK_Num5 = &H65
Private Const VK_Num6 = &H66
Private Const VK_Num7 = &H67
Private Const VK_Num8 = &H68
Private Const VK_Num9 = &H69
Private Const VK_NumAdd = &H6B
Private Const VK_PageUp = &H21 'Page Up 键
Private Const VK_PageDown = &H22 'Page Down 键
'vbKeyNumpad0 0x60 小键盘 0 键
'vbKeyNumpad1 0x61 小键盘 1 键
'vbKeyNumpad2 0x62 小键盘 2 键
'vbKeyNumpad3 0x63 小键盘 3 键
'vbKeyNumpad4 0x64 小键盘 4 键
'vbKeyNumpad5 0x65 小键盘 5 键
'vbKeyNumpad6 0x66 小键盘 6 键
'vbKeyNumpad7 0x67 小键盘 7 键
'vbKeyNumpad8 0x68 小键盘 8 键
'vbKeyNumpad9 0x69 小键盘 9 键
'vbKeyMultiply 0x6A 小键盘 * 键
'vbKeyAdd 0x6B 小键盘 + 键
'vbKeySeparator 0x6C 小键盘回车键
'vbKeySubtract 0x6D 小键盘 - 键
'vbKeyDecimal 0x6E 小键盘 . 键
'vbKeyDivide 0x6F 小键盘 / 键
Private Const LLKHF_UP As Long = &H80& 'test the transition-state flag
Public Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
Private Type KBDLLHOOKSTRUCT
vkCode As Long 'a virtual-key code in the range 1 to 254
scanCode As Long 'hardware scan code for the key
flags As Long 'specifies the extended-key flag,
'event-injected flag, context code,
'and transition-state flag
time As Long 'time stamp for this message
dwExtraInfo As Long 'extra info associated with the message
End Type
Dim kbdllhs As KBDLLHOOKSTRUCT
Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If nCode = HC_ACTION Then
Call CopyMemory(kbdllhs, ByVal lParam, Len(kbdllhs))
If (kbdllhs.flags And LLKHF_UP) Then
'Dim Topid As Long
'Topid = GetForegroundWindow
'If Topid = FrmMain.hwnd Then
Select Case kbdllhs.vkCode
Case VK_F12
If Form1.Check1.Value = 0 Then
GameFormHwnd = FindWindow("ElementClient Window", "Element Client")
If GameFormHwnd = 0 Then
Started = False
Form1.Check1.Value = 0
Form1.Timer2.Enabled = False
Form1.Timer3.Enabled = False
MsgBox "请确认是否已打开游戏!"
Else
hptime = 0
mptime = 0
hpused = 0
mpused = 0
Started = True
Form1.Check1.Value = 1
GetWindowThreadProcessId GameFormHwnd, hProcId
Form1.Timer2.Enabled = True
Form1.Timer3.Enabled = True
End If
Else
Started = False
Form1.Timer2.Enabled = False
Form1.Timer3.Enabled = False
Form1.Check1.Value = 0
End If
'Case VK_F1
'Case VK_F2
'Case VK_F3
'Case VK_F4
'Case VK_F5
'Case VK_F6
'Case VK_F7
'Case VK_F8
'Case VK_F9
'Case VK_F10
Case Else
LowLevelKeyboardProc = CallNextHookEx(m_hDllKbdHook, nCode, wParam, lParam)
End Select
'End If 'topid
End If 'If (kbdllhs.flags And LLKHF_UP) Then
End If 'nCode = HC_ACTION
'LowLevelKeyboardProc = CallNextHookEx(m_hDllKbdHook, nCode, wParam, lParam)
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -