查看窗口树,枚举系统窗口工具包括子窗口

易语言 2020-08-22 11:38:57

查看窗口树,枚举系统窗口工具包括子窗口

.子程序 递归生成窗口树, , , 通过为树型框构造项目数据字节集的方式来生成窗口树
.参数 参文件号
.参数 参缩进层次
.参数 参窗口句柄
.参数 参只显示可见窗口, 逻辑型, 可空
.局部变量 局部_窗口类名, 文本型
.局部变量 局部_窗口标题, 文本型
.局部变量 局部_窗口句柄, 整数型
.局部变量 局部_缩进层次, 整数型
.局部变量 局部_窗口信息, 文本型
.局部变量 局部_ICO索引, 整数型
.局部变量 局部_计次, 整数型, 静态

.如果真 (是否为空 (参只显示可见窗口))
参只显示可见窗口 = 真
.如果真结束
.如果真 (参窗口句柄 = 0)
返回 ()
.如果真结束
.如果真 (参只显示可见窗口 = 假)
局部_计次 = 0
.如果真结束
连续赋值 (取空白文本 (256), 局部_窗口类名, 局部_窗口标题)
SendMessageA_Str (参窗口句柄, #WM_GETTEXT, 255, 局部_窗口标题)
GetClassNameA (参窗口句柄, 局部_窗口类名, 255)
局部_窗口标题 = 删首尾空 (局部_窗口标题)
.如果真 (局部_窗口标题 = “”)
GetWindowTextA (参窗口句柄, 局部_窗口标题, 255)
.如果真结束
局部_窗口信息 = 到文本 (参窗口句柄) + “|” + 局部_窗口类名 + “|” + 局部_窗口标题
局部_ICO索引 = 取图标 (局部_窗口类名, 参窗口句柄)
.如果 (527782 = 参窗口句柄)
写出数据 (参文件号, 局部_窗口信息, 局部_ICO索引, 局部_ICO索引, 局部_计次, 1, 参缩进层次)
程序集_现行选中项 = 局部_计次
.否则
写出数据 (参文件号, 局部_窗口信息, 局部_ICO索引, 局部_ICO索引, 局部_计次, 0, 参缩进层次)
.如果结束
局部_计次 = 局部_计次 + 1
' 写出数据(内存文件号,树型框标题,图片索引,选中图片索引,项目数值,是否加粗,缩进层次)
' 第四个整数:0:通常;1:加粗;2:展开;3:既展开又加粗
局部_窗口句柄 = GetWindow (参窗口句柄, #GW_CHILD)
参缩进层次 = 参缩进层次 + 1
.判断循环首 (局部_窗口句柄 ≠ 0)
处理事件 ()
.如果 (参只显示可见窗口 = 假 且 IsWindowVisible (局部_窗口句柄) = 0)

.否则
递归生成窗口树 (参文件号, 参缩进层次, 局部_窗口句柄)
.如果结束
局部_窗口句柄 = GetWindow (局部_窗口句柄, #GW_HWNDNEXT)
.判断循环尾 ()