请问如何用 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
以下是窗体代码
SendMessage和PostMessage效果一致,如果你想用SendMessage就请将PostMessage替换掉即可
Private Sub Command1_Click()
PostMessage Text1.hwnd, WM_KEYDOWN, &H41, 0&
End Sub
给你的例子是发送“按下”消息的,要模拟一次完整的点击按键还需要发送一个“弹起”消息。
啰嗦一句,可以是这样
Private Sub Command1_Click()
PostMessage Text1.hwnd, WM_KEYUP, &H41, 0&
End Sub
SendMessage的不会被TranslateMessage处理,所以发WM_KEYDOWN对识别WH_CHAR的没效果
Private Sub Command1_Click()
PostMessage Text1.hwnd, WM_KEYDOWN, &H41, 0&
Sleep 100 ‘延迟片刻
PostMessage Text1.hwnd, WM_KEYUP, &H41, 0&
End Sub
补充:VB , API