按键精灵开发教程:遍历子窗口

按键精灵开发教程:遍历子窗口

ID:6752959

大小:1.78 MB

页数:12页

时间:2018-01-24

按键精灵开发教程:遍历子窗口_第1页
按键精灵开发教程:遍历子窗口_第2页
按键精灵开发教程:遍历子窗口_第3页
按键精灵开发教程:遍历子窗口_第4页
按键精灵开发教程:遍历子窗口_第5页
资源描述:

《按键精灵开发教程:遍历子窗口》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、按键精灵开发教程:遍历子窗口来源:按键学院【按键精灵】遍历一个窗口的所有子窗口,返回符合条件(标题或类名)的窗口句柄,请写出函数(遍历子窗口).>>题意解析假设红色框框圈起来的就是我们要遍历的窗口。那么,我们要遍历到的是这个窗口下的所有子窗口,二级子窗口,三级子窗口……有多少级都要遍历下去。如果遍历到类名或标题符合的子窗口,则记录下来。以上图的窗口为例,      假设我们设置的返回条件是窗口类名=Button,      那么只有窗口句柄为65638这个子窗口符合条件,则返回窗口句柄:65638      假设我们设置的返回条件是窗口类名=ToolbarWindow32 ,  

2、    那么有两个子窗口符合条件,则返回这两个窗口的窗口句柄:65632和65636有多少童鞋坑在了这一题呢?是否写了很长的一段代码,但是测试的时候发现就是行不通?不必烦恼不必彷徨,小编今天带来了工程师06,也就是咱们骚气的06老师的精品代码,十六行代码搞定遍历子窗口思路遍历子窗口源码分享Function遍历子窗口(Parent,ClassName)DimRetStr,TmpHdr//定义局部变量DoTmpHdr=Plugin.Window.FindEx(Parent,TmpHdr,0,0)//查找子窗口IfTmpHdrThen//判断是否有查找到子窗口IfPlugin.Wind

3、ow.GetClass(TmpHdr)=ClassNameThen//判断窗口类名RetStr=RetStr&TmpHdr&"

4、"//符合则记录窗口句柄RetStr=RetStr&遍历子窗口(TmpHdr,ClassName)//递归寻找下一级窗口ElseRetStr=RetStr&遍历子窗口(TmpHdr,ClassName)//递归寻找下一级窗口EndIfEndIfLoopWhileTmpHdr//如果没有子窗口则退出循环遍历子窗口=RetStr//将查找到的符合的窗口句柄返回EndFunction代码分析要怎么理解递归呢?《盗梦空间》不知道大伙有没有看过,小编很喜欢这部电影

5、,刺激带感……咳咳言归正传我们可以把递归比作梦境来理解。整个  遍历子窗口   函数就是一个梦境当我们在脚本开始的时候,还清醒着。TracePrint遍历子窗口(65608,"Button")执行这句的时候,我们就带着 65608,"Button"这两个参数值进入了第一重梦境>>第一重梦境先将 RetStr,TmpHdr 两个变量定义成局部变量,局部变量只作用于当前梦境,进入下一重梦境,它们会初始化。进入循环,查找子窗口我们带来的两个参数,65608 是传递给parent的,而 Tmphdr 此刻的值是0/空。带入  TmpHdr=Plugin.Window.FindEx(Par

6、ent,TmpHdr,0,0)  中运算:     TmpHdr=Plugin.Window.FindEx(65608, 0,0,0)    TmpHdr= 65614判断是否有子窗口       IfTmpHdrThen      EndIf       TmpHdr= 65614 有子窗口,则判断窗口句柄类名我们带来的两个参数,"Button" 是传递给 ClassName的 带入 if Plugin.Window.GetClass(TmpHdr)=ClassNameThen 中运算:当前子窗口的类名为:TrayNotifyWnd不符合要求,则执行else后面的语句:RetS

7、tr=RetStr&遍历子窗口(TmpHdr,ClassName)执行这一句,又调用了遍历子窗口函数,带着TmpHdr,ClassName 进入了第二重梦境。 此时 TmpHdr=65614       ClassName  值不变     parent=65608>>第二重梦境TmpHdr 的值传递给了parentClassName 的值传递给了 ClassName之前在第一重梦境里的 RetStr 和TmpHdr 的值在第二重梦境不生效,初始化为0/空带入  TmpHdr=Plugin.Window.FindEx(Parent,TmpHdr,0,0)  中运算:TmpHdr=

8、Plugin.Window.FindEx(65614 ,0,0,0)TmpHdr= 65616判断是否有子窗口        IfTmpHdrThen        EndIf             TmpHdr= 65616 有子窗口,则判断窗口句柄类名      ClassName="Button"      带入 if Plugin.Window.GetClass(TmpHdr)=ClassNameThen 中运算:      当前子窗口的类名为:TrayClockWCl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。