Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Const WM_KEYDOWN = &H100
Const WM_KEYUP = &H101
Const WM_CHAR = &H102
Const WM_SYSKEYDOWN = &H104
Const WM_SYSKEYUP = &H105
Const WM_SYSCHAR = &H106
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
Const WM_RBUTTONDOWN = &H204
Const WM_RBUTTONUP = &H205
Function MakeKeyLparam(VirtualKey,flag)
Dim s,Firstbyte'lparam参数的24-31位
Select Case flag
Case WM_KEYDOWN
Firstbyte = "00"
Case WM_KEYUP
Firstbyte = "C0" '如果是释放键
Case WM_CHAR
Firstbyte = "C0"
Case WM_SYSKEYDOWN
Firstbyte = "20"
Case WM_SYSKEYUP
Firstbyte = "E0"
Case WM_SYSCHAR
Firstbyte = "E0"
End Select
Dim Scancode
'获得键的扫描码
Scancode = MapVirtualKey(VirtualKey, 0)
Dim Secondbyte 'lparam参数的16-23位,即虚拟键扫描码
Secondbyte = Right("00" & Hex(Scancode), 2)
s = Firstbyte & Secondbyte & "0001" '0001为lparam参数的0-15位,即发送次数和其它扩展信息