新建工程,窗体FORM1,添加按钮Command1,计时器Timer1,Timer2
Timer1,Timer2的Enabled属性都改成False,Interval属性都改成300
窗口代码
Private a As Integer
Private b As Integer
Public Sub Command1_Click()
Timer1.Enabled = False
Timer2.Enabled = False
End Sub
Private Sub Form_Load()
a = 1
b = 1
Call ZhuCeHotKey(Me.hwnd)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call UnLoadHotKey(Me.hwnd)
End Sub
Public Sub Timer1_Timer()
Timer2.Enabled = False
Timer1.Enabled = True
If a = 1 Then
SendKeys "j"
a = 2
ElseIf a = 2 Then
SendKeys "k"
a = 3
ElseIf a = 3 Then
SendKeys "l"
a = 1
End If
End Sub
Public Sub Timer2_Timer()
Timer1.Enabled = False
Timer2.Enabled = True
If b = 1 Then
SendKeys "o"
b = 2
ElseIf b = 2 Then
SendKeys "i"
b = 3
ElseIf b = 3 Then
SendKeys "u"
b = 1
End If
End Sub
添加一模块
模块代码
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private 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
Private Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As Long
Private Const WM_HOTKEY = &H312
Private Const GWL_WNDPROC = (-4)
Private Const VK_F6 = &H75
Private Const VK_F7 = &H76
Private Const VK_F8 = &H77
Private Const VK_F5 = &H74
Dim PrevWndProc&
Public Function ZhuCeHotKey(MeHWND As Long)
Dim ret As Long
'记录原来的window程序地址
PrevWndProc = GetWindowLong(MeHWND, GWL_WNDPROC)
'用自定义程序代替原来的window程序
ret = SetWindowLong(MeHWND, GWL_WNDPROC, AddressOf SubWndProc)
ret = RegisterHotKey(MeHWND, 21345, 0, VK_F5)
If ret = 0 Then
MsgBox "F5热键失败!"
End If
ret = RegisterHotKey(MeHWND, 21346, 0, VK_F6)
If ret = 0 Then
MsgBox "F6热键失败!"
End If
ret = RegisterHotKey(MeHWND, 21347, 0, VK_F7)
If ret = 0 Then
MsgBox "F7热键失败!"
End If
ret = RegisterHotKey(MeHWND, 21348, 0, VK_F8)
If ret = 0 Then
MsgBox "F8热键失败!"
End If
End Function
Private Function SubWndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_HOTKEY And wParam = 21345 Then
Call Form1.Timer1_Timer
End If
If Msg = WM_HOTKEY And wParam = 21346 Then
Call Form1.Timer2_Timer
End If
If Msg = WM_HOTKEY And wParam = 21347 Then
MsgBox "F7"
End If
If Msg = WM_HOTKEY And wParam = 21348 Then
Call Form1.Command1_Click
End If
'调用默认的窗口处理过程
SubWndProc = CallWindowProc(PrevWndProc, hwnd, Msg, wParam, lParam)
End Function
Public Function UnLoadHotKey(MeHWND As Long)
Dim ret As Long
'取消Message的截取,使之送往原来的window程序
ret = SetWindowLong(MeHWND, GWL_WNDPROC, PrevWndProc)
Call UnregisterHotKey(MeHWND, VK_F5)
Call UnregisterHotKey(MeHWND, VK_F6)
Call UnregisterHotKey(MeHWND, VK_F7)
Call UnregisterHotKey(MeHWND, VK_F8)
End Function
没弄懂你的意思
不会是用来玩模拟游戏用的吧。