.版本 2 .支持库 spec '══════════════════════════════════════════════════════════════════ ' 控件全量名字遍历 2026-09-25 ' 池基址 63133528 (0x3C35758) 容量 15000(0x3C441BC - 0x3C35758) ' 控件结构 +0x00 虚表 / +0x04 父窗口 / +0x0C 槽号 / +0x364 控件ID / +0x368 名称(BIG5 内联缓冲) ' 用法:控件_列名字 (0) 全部列出 ' 控件_搜名字 (“丸”) 按关键词筛 '══════════════════════════════════════════════════════════════════ .子程序 控件_列名字 .参数 最大打印, 整数型, , 0 = 不限 .局部变量 句柄, 整数型 .局部变量 池基址, 整数型 .局部变量 S, 整数型 .局部变量 控件, 整数型 .局部变量 控件ID, 整数型 .局部变量 名称, 文本型 .局部变量 已打, 整数型 句柄 = 全局_进程句柄 池基址 = 63133528 写日志 (“── 控件全量名字遍历 ──” + #换行符) S = 0 .判断循环首 (S < 15000) 控件 = 内存_读整数型 (句柄, 池基址 + S × 4) .如果真 (控件 > 0 且 控件 ≠ -1) ' 0 是空槽,-1 是哨兵,跟游戏一致 控件ID = 内存_读整数型 (句柄, 控件 + 868) ' +0x364 名称 = 编码_BIG5到简体 (内存_读文本型 (句柄, 控件 + 872, 0)) ' +0x368 .如果真 (取文本长度 (名称) ≥ 2) ' 过滤空名/乱码 写日志 (“槽” + 到文本 (S) + “ ID=” + 到文本 (控件ID) + “ ” + 名称 + #换行符) 已打 = 已打 + 1 .如果真 (最大打印 > 0 且 已打 ≥ 最大打印) 跳出循环 () .如果真结束 .如果真结束 .如果真结束 S = S + 1 处理事件 () .判断循环尾 () 写日志 (“遍历结束,带名字的控件 = ” + 到文本 (已打) + #换行符) .子程序 控件_搜名字 .参数 关键词, 文本型 .参数 最大打印, 整数型, , 0 = 不限 .局部变量 句柄, 整数型 .局部变量 池基址, 整数型 .局部变量 S, 整数型 .局部变量 控件, 整数型 .局部变量 控件ID, 整数型 .局部变量 名称, 文本型 .局部变量 命中, 整数型 句柄 = 全局_进程句柄 池基址 = 63133528 写日志 (“── 搜索控件名带【” + 关键词 + “】的 ──” + #换行符) S = 0 .判断循环首 (S < 15000) 控件 = 内存_读整数型 (句柄, 池基址 + S × 4) .如果真 (控件 > 0 且 控件 ≠ -1) 控件ID = 内存_读整数型 (句柄, 控件 + 868) 名称 = 编码_BIG5到简体 (内存_读文本型 (句柄, 控件 + 872, 0)) .如果真 (寻找文本 (名称, 关键词, 1, 假) > 0) 写日志 (“槽” + 到文本 (S) + “ 控件=” + 到文本 (控件) + “ ID=” + 到文本 (控件ID) + “ ” + 名称 + #换行符) 命中 = 命中 + 1 .如果真 (最大打印 > 0 且 命中 ≥ 最大打印) 跳出循环 () .如果真结束 .如果真结束 .如果真结束 S = S + 1 处理事件 () .判断循环尾 () 写日志 (“命中 = ” + 到文本 (命中) + #换行符)