在VB中,已知主窗口句柄,如何用FindWindowEx找到第二个文本框的句柄

已知主窗口句柄为874523,里面有2个文本框获取第一个文本框句柄的方法为h1=FindWindowEx(874523,0,"Edit",vbNullString)那么获... 已知主窗口句柄为874523,里面有2个文本框
获取第一个文本框句柄的方法为h1 = FindWindowEx(874523, 0, "Edit", vbNullString)
那么获取第二个文本框的句柄怎么写代码
展开
 我来答
piestkj
推荐于2018-03-10 · TA获得超过928个赞
知道小有建树答主
回答量:820
采纳率:0%
帮助的人:613万
展开全部

首先,一个窗口的句柄根本不是固定的,所以用常量来表示一个窗口句柄是不合适的。VB的窗体都有一个名为hWnd的属性,这个属性里保存的就是这个窗口的句柄。

其次,“#32770”是普通窗体的窗口类名,如果要找这样的窗口,可以用handle = FindWindow(窗口类名, 窗口名)来寻找它。

 

如果要寻找子窗口的句柄,假设父窗口的句柄为phandle,那么可以用chandle = FindWindowEx(phandle, 0, 子窗口类名, vbNullString)来完成。此时,找到的是父窗口内第一个类名为“子窗口类名”的子窗口。如果要找到下一个子窗口,需要用chandle2 = FindWindowEx(phandle, chandle, 子窗口类名, vbNullString)来完成。

现在,已经知道了第一个子窗口的句柄为h1,子窗口类名为"EDIT",那么我们可以用如下语句来寻找第二个子窗口:

h2 = FindWindowEx(874523, h1, "EDIT", vbNullString)

不过还是建议用一个变量来保存父窗口的句柄。顺便说一下,如果此时h2为0,那就是说,这个父窗口内没有第二个类名为"EDIT"的子窗口了。

百度网友cc16d5c
2014-07-30 · TA获得超过731个赞
知道小有建树答主
回答量:647
采纳率:50%
帮助的人:536万
展开全部
h2=findwindowex(874523,h1,"Edit",vbnullstring)
追问

试验失败了,原因在哪里呢。h1出来了,h2没出来还是0


追答

第二个文本框没在4002512之下,而是在4002512之下的某个子窗口之下,你可以用C++附带的Spy++,按键精灵附带的按键抓抓等查看窗口局部的工具查看你要找的窗口的子窗口句柄信息,在根据工具反馈的信息来编写你的代码

比如上面的这个窗口,找到Form1的句柄(h)后,可以用FindWindowEx找到Text1的句柄(h1),但是找不到Text2~Text4的,用FindWindowEx(h,0,"Frame1的类名",vbNullString)找到Fram1的句柄(h2)后,用FindWindowEx(h2,0,"Text2的类名",vbNUllString)找到Text2的句柄,但是找不到Text3和Text4的,用FindWindowEx(h2,0,"Frame2的类名,vbNullString)找到Frame2的句柄(h3)后,可以用FindWindowEx(h3,0,"text3的类名",vbnullstring)找到Text3的句柄(h4),接着用FindWindowEx(h3,h4,"Text4的类名",vbNullString)就可以找到Text4的句柄。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式