vb怎么获取控件句柄和内容
我只知道获取窗口句柄,但是书上讲带全是子窗口和父窗口的。怎么获取控件带呢?请给源代码我。(我知道了窗口句柄,怎么获取控件句柄怎么显示控件带内容)我现在刚学API函数,对于...
我只知道获取窗口句柄,但是书上讲带全是子窗口和父窗口的。怎么获取控件带呢?请给源代码我。(我知道了窗口句柄,怎么获取控件句柄怎么显示控件带内容)我现在刚学API函数,对于那些东西很多不懂,希望见谅。
我要获取的其他程序上窗体的控件 展开
我要获取的其他程序上窗体的控件 展开
2个回答
2015-08-01
展开全部
先找到窗口的句柄,再来查找按钮的句柄,如果按钮有文本内容,那就好办,如果没有,那建议你利用SPY++先来察看一下按钮的类型,以此类型为查找参数多次调用FindWindowEx来查找,直到找到的的句柄和Spy++相同,那么这个按钮就找到了。
按钮类名同样,但是你去遍历的时候它的次序始终是固定的。通过id不可靠,有些有id但是有些id是0。
clswindow类,里面有个函数etElementHwndByClassName,可以得到指定的次序按钮。加入你要处理的按钮是在第二个次序,类名为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
按钮类名同样,但是你去遍历的时候它的次序始终是固定的。通过id不可靠,有些有id但是有些id是0。
clswindow类,里面有个函数etElementHwndByClassName,可以得到指定的次序按钮。加入你要处理的按钮是在第二个次序,类名为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
展开全部
VB 中 有句柄 hwnd 的控件,就可以通过 API 函数操作
比如 commandbutton,picturebox
没有句柄 hwnd 的控件就不可以
比如 label
通过 API 获取 commandbutton 的Caption
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Sub Command1_Click()
Dim i As Long
Dim a As String
i = GetWindowTextLength(Command1.hwnd)
a = String$(i + 1, 0)
GetWindowText Command1.hwnd, a, Len(a)
Print a
End Sub
显示的就是 Command1 的 属性 Caption 值: Command1
比如 commandbutton,picturebox
没有句柄 hwnd 的控件就不可以
比如 label
通过 API 获取 commandbutton 的Caption
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Sub Command1_Click()
Dim i As Long
Dim a As String
i = GetWindowTextLength(Command1.hwnd)
a = String$(i + 1, 0)
GetWindowText Command1.hwnd, a, Len(a)
Print a
End Sub
显示的就是 Command1 的 属性 Caption 值: Command1
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询