当前位置:编程学习 > VB >>

请问如何用 sendmessage 发送键盘按键消息?


SendMessage 发送消息 整数型 由具体的消息决定    
DLL库文件名   在DLL库中对应命令名      
user32   SendMessageA      
参数 中文 类型 数组 传址 备注
hwnd 窗口句柄 整数型     要接收消息的那个窗口的句柄
wMsg 信息值 整数型     消息的标识符
wParam 参数一 整数型     具体取决于消息
lParam 参数二 整数型     具体取决于消息




比如我先在已经获得句柄的窗口按下A键(ASCII值为65)怎么写哦? 创建一个工程,添加一个窗体,一个标准模块
以下是标准模块代码

Public Const WM_KEYUP = &H101
Public Const WM_KEYDOWN = &H100
Public Const WM_SYSKEYDOWN = &H104
Public Const WM_SYSKEYUP = &H105

Public 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 Sub Command1_Click()
    PostMessage Text1.hwnd, WM_KEYDOWN, &H41, 0&
End Sub
SendMessage和PostMessage效果一致,如果你想用SendMessage就请将PostMessage替换掉即可

给你的例子是发送“按下”消息的,要模拟一次完整的点击按键还需要发送一个“弹起”消息。

Private Sub Command1_Click()
    PostMessage Text1.hwnd, WM_KEYUP, &H41, 0&
End Sub


啰嗦一句,可以是这样

Private Sub Command1_Click()
    PostMessage Text1.hwnd, WM_KEYDOWN, &H41, 0&
    Sleep 100  ‘延迟片刻
    PostMessage Text1.hwnd, WM_KEYUP, &H41, 0&
End Sub
SendMessage的不会被TranslateMessage处理,所以发WM_KEYDOWN对识别WH_CHAR的没效果
补充:VB ,  API
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,