Option Explicit
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Const WH_KEYBOARD = 13
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, lParam As Any) As Long
Public hNextHookProc As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const BM_CLICK = &HF5
Public Type KBDLLHOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type
Public Sub UnHookKBD()
On Error Resume Next
If hNextHookProc <> 0 Then
UnhookWindowsHookEx hNextHookProc
hNextHookProc = 0
End If
End Sub
Public Function EnableKBDHook()
On Error Resume Next
If hNextHookProc <> 0 Then
Exit Function
End If
hNextHookProc = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, App.hInstance, 0)
If hNextHookProc <> 0 Then
EnableKBDHook = hNextHookProc
End If
End Function
Public Function MyKBHFunc(ByVal iCode As Long, ByVal wParam As Long, lParam As KBDLLHOOKSTRUCT) As Long
On Error Resume Next
MyKBHFunc = 0
If iCode < 0 Then
MyKBHFunc = CallNextHookEx(hNextHookProc, iCode, wParam, lParam)
Exit Function
End If
If lParam.vkCode = vbKeyHome Then
SendMessage 主面板.Command1.hwnd, &HF5, 0, ByVal 0
ElseIf lParam.vkCode = vbKeyEnd Then
End If
'MyKBHFunc = 1
Call CallNextHookEx(hNextHookProc, iCode, wParam, lParam)
End Function
你按键点击的命令是用if 判断控制的 你可以在此判断条件的基础上再加一个条件比如b=false才执行按钮点击
If lParam.vkCode = vbKeyHome Then