六级认证--遍历子窗口源码分享
本文由按键学院提供技术支持
按键学院交流群(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"这两个参数值进入了第一重梦境