VB如何获取一个按钮的句柄

敬礼 2013-08-19 09:59:33
就是我通过FindWindowEx来获取一个程序中的一个按钮的句柄,可是那个程序上的按钮类名都是一样的,而且都没有标题,怎么获取指定按钮的句柄
...全文
941 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
就是那个党伟 2013-09-01
  • 打赏
  • 举报
回复
引用 1 楼 xiaoyao961 的回复:
和树一样,第几个杈知道就行了
引用 2 楼 Chen8013 的回复:
既然你是获取第三方程序的,那就在获取句柄后,再 GetWindowRect(),按位置及大小来区分是哪个按钮就行了。
无·法 2013-08-21
  • 打赏
  • 举报
回复
引用 6 楼 sysdzw 的回复:
按钮类名同样,但是你去遍历的时候它的次序始终是固定的。通过id不可靠,有些有id但是有些id是0。 借机推荐下我封装的clswindow类,里面有个函数GetElementHwndByClassName,可以得到指定的次序按钮。加入你要处理的按钮是在第二个次序,类名为Button,那么就用:GetElementHwndByClassName("Button",2),即可,具体代码:
Private Sub Command6_Click()
    Dim w As New clsWindow
    Dim i%
    If w.GetWindowHwndByTitleEx("自动化操作框架") > 0 Then
        i = i + 1
        Do While w.GetElementHwndByClassName("ThunderCommandButton", i) > 0'按次序遍历
            MsgBox w.GetElementHwndByClassName("ThunderCommandButton", i)'得到当前次序按钮的句柄
            w.SetElementTextByClassName "ThunderCommandButton", "次序" & i, i'设置按钮文本
            i = i + 1
        Loop
    End If
End Sub
打包下载: http://files.cnblogs.com/sysdzw/clsWindow1.8_demo8_%E8%8E%B7%E5%8F%96%E6%97%A0%E6%A0%87%E9%A2%98%E6%8C%89%E9%92%AE%E5%8F%A5%E6%9F%84.zip
上面地址不能保证一直有效。如果不能下载的话用这个地址:http://download.csdn.net/detail/sysdzw/5833701
无·法 2013-08-21
  • 打赏
  • 举报
回复
按钮类名同样,但是你去遍历的时候它的次序始终是固定的。通过id不可靠,有些有id但是有些id是0。

借机推荐下我封装的clswindow类,里面有个函数GetElementHwndByClassName,可以得到指定的次序按钮。加入你要处理的按钮是在第二个次序,类名为Button,那么就用:GetElementHwndByClassName("Button",2),即可,具体代码:
Private Sub Command6_Click()
Dim w As New clsWindow
Dim i%
If w.GetWindowHwndByTitleEx("自动化操作框架") > 0 Then
i = i + 1
Do While w.GetElementHwndByClassName("ThunderCommandButton", i) > 0'按次序遍历
MsgBox w.GetElementHwndByClassName("ThunderCommandButton", i)'得到当前次序按钮的句柄
w.SetElementTextByClassName "ThunderCommandButton", "次序" & i, i'设置按钮文本
i = i + 1
Loop
End If
End Sub




打包下载:
http://files.cnblogs.com/sysdzw/clsWindow1.8_demo8_%E8%8E%B7%E5%8F%96%E6%97%A0%E6%A0%87%E9%A2%98%E6%8C%89%E9%92%AE%E5%8F%A5%E6%9F%84.zip


舉杯邀明月 2013-08-20
  • 打赏
  • 举报
回复
既然你是获取第三方程序的,那就在获取句柄后,再 GetWindowRect(),按位置及大小来区分是哪个按钮就行了。
threenewbee 2013-08-20
  • 打赏
  • 举报
回复
GetDlgItem,如果你知道按钮的ID的话。
贝隆 2013-08-20
  • 打赏
  • 举报
回复
先找到窗口的句柄,再来查找按钮的句柄,如果按钮有文本内容,那就好办,如果没有,那建议你利用SPY++先来察看一下按钮的类型,以此类型为查找参数多次调用FindWindowEx来查找,直到找到的的句柄和Spy++相同,那么这个按钮就找到了。 http://download.csdn.net/detail/veron_04/3291019
赵4老师 2013-08-20
  • 打赏
  • 举报
回复
楼上两位所言极是。
  • 打赏
  • 举报
回复
和树一样,第几个杈知道就行了

1,486

社区成员

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

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