
先找到窗口的句柄,再来查找按钮的句柄,如果按钮有文本内容,那就好办,如果没有,那建议你利用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 wGetWindowHwndByTitleEx("自动化 *** 作框架") > 0 Then
i = i + 1
Do While wGetElementHwndByClassName("ThunderCommandButton", i) > 0'按次序遍历
MsgBox wGetElementHwndByClassName("ThunderCommandButton", i)'得到当前次序按钮的句柄
wSetElementTextByClassName "ThunderCommandButton", "次序" & i, i'设置按钮文本
i = i + 1
Loop
End If
End Sub
它是一个子窗口,没有标题,每次登陆时类名就变了,怎么得到它的窗口句柄呢?用Findwindow没用啊!
你是什么语言??VB还是C++?
给你个VB CODE :
Function GetQQpath()
Dim ps, s '获取QQ进程所存在的路径
s = "qqexe"
For Each ps In GetObject("winmgmts:\\\root\cimv2:win32_process")instances_ '循环进程
If UCase(psName) = UCase(s) Then
Form1Label1Caption = psexecutablepath
GoTo q
End If
Next
q:
End Function
这个可以用知道进程名就可以知道程序路径了,原理很简单。自己摸索、
(针对新手: 结果显示在label1上面。否则会出现缺少对象)
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Sub Timer1_Timer()
Dim a As POINTAPI
GetCursorPos a
b = WindowFromPoint(ax, ay)
MeCaption = b
End Sub
添加一个timer控件 代码如上 取得句柄在窗体标题处显示
标记编程语言 (Markup Languages) 是一种人造语言,它使用文本注释来定义这些文本的显示方式。
以上就是关于vb怎么获取控件句柄和内容全部的内容,包括:vb怎么获取控件句柄和内容、通过api获取窗口句柄是通过类名和标题得到,如果我软件标题不固定。还有什么其它的方法得到窗口句柄、怎么样得到控件所在的窗口句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)