
- 初中三年级
- 2220985
- 396
- 0
- 532 朵
- 2506 个
- 334 个
- 480
- 2013-10-27
|
1#
t
T
发表于 2015-01-12 16:33
|
|只看楼主
六级认证--遍历子窗口源码分享 本文由按键学院提供技术支持
按键学院交流群(1群已满):376122403 零基础学按键精灵群(2群):372671254
遍历一个窗口的所有子窗口,返回符合条件(标题或类名)的窗口句柄,请写出函数(遍历子窗口). |
|
>>题意解析
 - 您所在的用户组无法下载或查看附件
 假设红色框框圈起来的就是我们要遍历的窗口。 那么,我们要遍历到的是这个窗口下的所有子窗口,二级子窗口,三级子窗口……有多少级都要遍历下去。 如果遍历到类名或标题符合的子窗口,则记录下来。
 以上图的窗口为例, 假设我们设置的返回条件是窗口类名=Button, 那么只有 窗口句柄为65638这个子窗口符合条件,则返回窗口句柄:65638 假设我们设置的返回条件是窗口类名=ToolbarWindow32 , 那么有两个子窗口符合条件,则返回这两个窗口的窗口句柄:65632和65636
有多少童鞋坑在了这一题呢? 是否写了很长的一段代码,但是测试的时候发现就是行不通?
 不必烦恼不必彷徨,小编今天带来了 工程师06,也就是咱们骚气的06老师的精品代码, 十六行代码搞定遍历子窗口
 |
思路
 - 您所在的用户组无法下载或查看附件
遍历子窗口源码分享
- Function 遍历子窗口(Parent, ClassName)
- Dim RetStr,TmpHdr //定义局部变量
- Do
- TmpHdr = Plugin.Window.FindEx(Parent, TmpHdr, 0, 0) //查找子窗口
- If TmpHdr Then // 判断是否有查找到子窗口
- If Plugin.Window.GetClass(TmpHdr) = ClassName Then //判断窗口类名
- RetStr = RetStr & TmpHdr & "|" //符合则记录窗口句柄
- RetStr = RetStr & 遍历子窗口(TmpHdr, ClassName)//递归寻找下一级窗口
- Else
- RetStr = RetStr & 遍历子窗口(TmpHdr, ClassName)//递归寻找下一级窗口
- End If
- End If
- Loop While TmpHdr //如果没有子窗口则退出循环
- 遍历子窗口 = RetStr //将查找到的符合的窗口句柄返回
- End Function
复制代码 代码分析
要怎么理解递归呢? 《盗梦空间》不知道大伙有没有看过,小编很喜欢这部电影,刺激、带感……咳咳 言归正传 我们可以把递归比作梦境来理解。
|
整个 遍历子窗口 函数就是一个梦境 当我们在脚本开始的时候,还清醒着。 TracePrint 遍历子窗口(65608,"Button") 执行这句的时候,我们就带着 65608,"Button"这两个参数值进入了第一重梦境
|