请问怎么用api函数SendMessage实现Button2按扭单击

aab_123456789 2020-06-23 05:21:00
请问怎么用api函数SendMessage实现Button2按扭单击,麻烦给出常量数值和代码,谢谢。
...全文
9575 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
清晨曦月 元老 2020-06-24
  • 打赏
  • 举报
回复
一点也不开玩笑的讲,中间加个延时^ ^。 另外,注意句柄和坐标系的关系。通常,传入窗口句柄也可以点击内部按钮,但坐标应该是窗体坐标系下按钮坐标。如果传入按钮句柄,那……随便吧。 Sub PostMouseClick(ByVal handle As IntPtr, ByVal x As Integer, ByVal y As Integer) If handle <> IntPtr.Zero Then Dim lParam As IntPtr = New IntPtr((y << 16) Or x) Dim wParam As IntPtr = IntPtr.Zero PostMessage(handle, WM_LBUTTONDOWN, wParam, lParam) Threading.Thread.Sleep(100) My.Application.DoEvents() PostMessage(handle, WM_LBUTTONUP, wParam, lParam) End If End Sub
aab_123456789 2020-06-24
  • 打赏
  • 举报
回复
谢谢版主,请问如下两句SendMessage为什么完成不了Button2的单击呢,还差什么地方,如果是PostMessage就可以 '函数和常量定义 Public Const WM_LBUTTONDOWN = &H201 Public Const WM_LBUTTONUP = &H202 Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer Public Const WM_LBUTTONDOWN = &H201 '消息发送 SendMessage(windowshWnd1, WM_LBUTTONDOWN, 0, 0) SendMessage(windowshWnd1, WM_LBUTTONUP, 0, 0) '按扭代码 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click MsgBox("t1") End Sub
threenewbee 2020-06-23
  • 打赏
  • 举报
回复
GetDlgItem 得到 Button2 的 Handle(假设是hButton)
然后发SendMessage(hWnd, WM_COMMAND, ID * 256+ BN_CLICKED, hButton)

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧