VB 使用sendmessage模拟鼠标点击窗口按钮问题

will3697 2014-06-27 11:16:08
代码:
Private Sub Command_Click()
hpwnd = FindWindow(vbNullString, "12345")
Print "hpwd:" & hpwnd
hcwnd = FindWindowEx(hpwnd, 0, vbNullString, "确定")
Print "hcwnd:" & hcwnd
SetForegroundWindow hpwnd '不加上这句话的话 就会出现时灵时不灵的情况
SendMessage hcwnd, &HF5, 0, 0
End Sub

这个代码可以实现点击按钮,但是不知道&HF5代表的是什么意思。
--------------------------------------------------------------------------------------------------------------------------------------------------
下面的代码则无反应,按道理来说是可以的,但是我试了好多次都是不行的:
Private Sub Command_Click()
hpwnd = FindWindow(vbNullString, "12345")
Print "hpwd:" & hpwnd
hcwnd = FindWindowEx(hpwnd, 0, vbNullString, "确定")
Print "hcwnd:" & hcwnd
SetForegroundWindow hpwnd
SendMessage hcwnd, WM_LBUTTONDOWN, 0, 0
SendMessage hcwnd, WM_LBUTTONUP, 0, 0
End Sub
请大神解释下是为什么,谢谢
...全文
1494 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
无·法 2014-06-29
  • 打赏
  • 举报
回复
引用 3 楼 will3697 的回复:
而且 &H209好像是 双击吧
Private Const WM_LBUTTONDOWN = &H201 Private Const WM_LBUTTONUP = &H202 的确是我写错了,不好意思
无·法 2014-06-28
  • 打赏
  • 举报
回复
&HF5是BM_CLICK的意思 你在窗体最上面加个声明: Private Const WM_LBUTTONUP = &H202 Private Const WM_MBUTTONDBLCLK = &H209 Private Sub Command_Click() hpwnd = FindWindow(vbNullString, "12345") Print "hpwd:" & hpwnd hcwnd = FindWindowEx(hpwnd, 0, vbNullString, "确定") Print "hcwnd:" & hcwnd SetForegroundWindow hpwnd SendMessage hcwnd, WM_LBUTTONDOWN, 0, 0 SendMessage hcwnd, WM_LBUTTONUP, 0, 0 End Sub 或者直接写值: SendMessage hcwnd, &H202, 0, 0 SendMessage hcwnd, &H209, 0, 0 另外,SetForegroundWindow 常常会失效,所以推荐你一个类clsWindow.clshttp://download.csdn.net/detail/sysdzw/5833701 修改后: Private Sub Command_Click() Dim w As New clsWindow '需要添加类模块 clsWindow.cls If w.GetWindowHwndByTitle("12345") > 0 Then w.Focus '保证窗口前置并获得焦点 w.ClickElementByText "确定" End If End Sub
will3697 2014-06-28
  • 打赏
  • 举报
回复
而且 &H209好像是 双击吧
will3697 2014-06-28
  • 打赏
  • 举报
回复
引用 楼主 will3697 的回复:
代码: Private Sub Command_Click() hpwnd = FindWindow(vbNullString, "12345") Print "hpwd:" & hpwnd hcwnd = FindWindowEx(hpwnd, 0, vbNullString, "确定") Print "hcwnd:" & hcwnd SetForegroundWindow hpwnd '不加上这句话的话 就会出现时灵时不灵的情况 SendMessage hcwnd, &HF5, 0, 0 End Sub 这个代码可以实现点击按钮,但是不知道&HF5代表的是什么意思。 -------------------------------------------------------------------------------------------------------------------------------------------------- 下面的代码则无反应,按道理来说是可以的,但是我试了好多次都是不行的: Private Sub Command_Click() hpwnd = FindWindow(vbNullString, "12345") Print "hpwd:" & hpwnd hcwnd = FindWindowEx(hpwnd, 0, vbNullString, "确定") Print "hcwnd:" & hcwnd SetForegroundWindow hpwnd SendMessage hcwnd, WM_LBUTTONDOWN, 0, 0 SendMessage hcwnd, WM_LBUTTONUP, 0, 0 End Sub 请大神解释下是为什么,谢谢
SendMessage hcwnd, WM_LBUTTONDOWN, 0, 0 SendMessage hcwnd, WM_LBUTTONUP, 0, 0 为什么WM_LBUTTONDOWN和WM_LBUTTONUP 不行呢? 我试了一下 SendMessage hcwnd, &H202, 0, 0 SendMessage hcwnd, &H209, 0, 0 也不行么。能不能帮忙看下啊,谢谢了

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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