《VB》API如何获取窗口内控件的句柄?

如题所述

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 Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Dim n As POINTAPI
Dim a As Long
Private Sub Form_Load()
Timer1.Interval = 100
Label1.Caption = "移动鼠标指针"
End Sub

Private Sub Timer1_Timer()
GetCursorPos n
a = WindowFromPoint(n.x, n.y)
If a <> 0 Then
Dim s As String
s = String(100, Chr(0))
GetWindowText a, s, 100
Label1.Caption = "目标标题或文本: " & Trim(s)
Label2.Caption = "目标句柄为 " & a
End If
End Sub
温馨提示:内容为网友见解,仅供参考
无其他回答

VB查找窗口句柄有哪些方法
我以前写辅助的时候弄过使用的API函数是findWindow首先声明一下API在你窗口最顶的位置上写上Private Declare Function 取窗口句柄 Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long'由于VB支持中文的 我就定义成 取窗口句柄 这个了 '在窗体中...

VB获取窗口句柄的详细教程
1、首先在电脑中打开VB软件,然后点击窗口。2、然后找到窗体布局窗口,就可以在这里,直接拖曳鼠标,设置窗体的位置。3、如果没有默认打开,回到操作页面中,找到并点击如下图的按钮。4、也可以找到stateUpPosition这个属性。5、然后在打开点页面中,就可以根据自己的需要,设置预设的类型了。

vb中API函数findwindow的详细用法?
1、VB6.0中的API声明:Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long2、具体使用:dim i as longi=FindWindow(vbNullString,"窗体的标题")注意:这里的vbNullString是空的,没有任何字符,即不传...

VB 如何得到窗体内控件的句柄
2、GetWindow 到这个窗口里找控件 使用 GW_CHILD 常数,这样找到的就是这个窗体的子窗体(控件)的句柄了。但是,有时候,控件是多层嵌套的,比如:窗口里有一个frame,frame里又嵌入一个frame,然后里面是一个textbox。这样是很常见的,那么唯一的方案就是用 getwindow递归查找GW_CHILD,如果GW_CHILD返...

VB通过进程名获取窗口句柄?求例子
用API获取,GetWindowThreadProcessId ihwnd, pid 得到进程IDhProcess = OpenProcess(&H1F0FFF, False, pid) 获得进程句柄 例子:Option ExplicitPrivate Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, By...

怎样用VB抓取窗口的句柄?
找窗体的句柄得用到API了,最常用的是:FindWindow(一般只找父窗口句柄),FindWindowEx(可找子窗口的句柄),给个例子看看,只用到一个command控件,希望可以帮到你,不了解可以再咨询:Option Explicit Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As ...

vb怎么获取控件句柄和内容
先找到窗口的句柄,再来查找按钮的句柄,如果按钮有文本内容,那就好办,如果没有,那建议你利用SPY++先来察看一下按钮的类型,以此类型为查找参数多次调用FindWindowEx来查找,直到找到的的句柄和Spy++相同,那么这个按钮就找到了。按钮类名同样,但是你去遍历的时候它的次序始终是固定的。通过id不可靠,有...

vb 获取窗口句柄
s = GetWindow(Me.hwnd, GW_HWNDFIRST) '获得句柄 GetWindowText s, a, 255 '获得标题 Dim ab As String * 255 GetClassName s, ab, 255 '获得类名 Dim ClassName As String ClassName = StripTerFlag(ab) 'StripTerFlag是一个自定义函数,后面有代码,用于去处结束符 If UCase(Cl...

VB获取窗体句柄后如何获取里面指定控件的句柄?
Private Sub Command1_Click() Dim x, y, z As Long x = FindWindow(vbNullString, "form1") Label1.Caption = x y = FindWindowEx(x, 0, "ThunderTextBox", "") Label2.Caption = y End Sub 上述代码中label1显示窗体的句柄,label2显示窗体中的一个文本框的句柄 ...

VB获取窗口下,鼠标光标位置所在的控件句柄
API:GetForegroundWindow 可以获取到有焦点的顶层窗口。获取有焦点的子窗口只能用GetFocus,但是如果当前顶层窗口属于其他线程,GetFocus将返回NULL。没有好的办法解决,除非AttachThreadInput或者用钩子(HOOK)。

相似回答