首页 » Visual Basic » VB后台模拟按键postmessage键盘按键码函数

VB后台模拟按键postmessage键盘按键码函数

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
 
Private Const WM_CHAR = &H102
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101
 
'按Y键
PostMessage Handle, WM_CHAR, vbKeyY, 0
'按y键
PostMessage Handle, WM_KEYDOWN, vbKeyY, 0
'或
PostMessage Handle, WM_CHAR, vbKeyS, MakeKeyLparam(vbKeyS, WM_KEYDOWN)
 
Function MakeKeyLparam(ByVal VirtualKey As Long, ByVal flag As Long) As Long
     Dim s As String
     Dim Firstbyte As String    'lparam参数的24-31位
     If flag = WM_KEYDOWN Then  '如果是按下键
         Firstbyte = "00"
     Else
         Firstbyte = "C0"       '如果是释放键
     End If
     Dim Scancode As Long
     '获得键的扫描码
     Scancode = MapVirtualKey(VirtualKey, 0)
     Dim Secondbyte As String   'lparam参数的16-23位,即虚拟键扫描码
     Secondbyte = Right("00" & Hex(Scancode), 2)
     s = Firstbyte & Secondbyte & "0001"  '0001为lparam参数的0-15位,即发送次数和其它扩展信息
     MakeKeyLparam = Val("&H" & s)
 End Function

转发到新浪微博 转发到新浪微博

目前这篇文章还没有评论(Rss)

我要评论
You must be logged in to post a comment.