|
发表于 2018-11-5 16:17:41
|
显示全部楼层
.版本 2
.支持库 EThread
.子程序 遍历任务, , , 更新
.参数 HWND, 整数型
.参数 _任务, 文本型, 参考 数组
.局部变量 窗口内存, 整数型
.局部变量 任务列表, 整数型
.局部变量 任务头, 整数型
.局部变量 任务数量, 整数型
.局部变量 任务, 整数型
.局部变量 任务文本, 文本型
清除数组 (_任务)
窗口内存 = 取窗口内存 (HWND, “TaskDialog”)
.如果真 (窗口内存 = 0)
返回 ()
.如果真结束
任务列表 = 读内存整数 (HWND, 窗口内存 + 十六到十 (“110”) + 十六到十 (“9C”))
读内存整数 (HWND, 任务列表 + 十六到十 (“1A4”))
' 调试输出 (十到十六 (任务列表))
.如果真 (读内存整数 (HWND, 任务列表 + 十六到十 (“1A4”)) = 0)
返回 ()
.如果真结束
任务数量 = 0
.判断循环首 ((读内存整数 (HWND, 任务列表 + 十六到十 (“1A8”)) - 读内存整数 (HWND, 任务列表 + 十六到十 (“1A4”))) ÷ 4 > 任务数量)
任务 = 读内存整数 (HWND, 读内存整数 (HWND, 任务列表 + 十六到十 (“1A4”)) + 任务数量 × 4)
.判断开始 (读内存整数 (HWND, 任务 + 十六到十 (“18”)) ≥ 16)
任务文本 = 读内存文本 (HWND, 读内存整数 (HWND, 任务 + 十六到十 (“4”)))
.默认
任务文本 = 读内存文本 (HWND, 任务 + 十六到十 (“4”))
.判断结束
' 调试输出 (任务文本, 十到十六 (任务))
.如果真 (读内存字节 (HWND, 任务 + 十六到十 (“38”)) = 0 且 寻找文本 (任务文本, “]”, , 假) > -1)
写内存字节 (HWND, 任务 + 十六到十 (“38”), 1)
进入许可区 (许可证)
dm.AsmClear ()
dm.AsmAdd (“mov ebx,0” + 十到十六 (任务))
dm.AsmAdd (“push ebx”)
dm.AsmAdd (“push 0” + 十到十六 (任务列表))
dm.AsmAdd (“call ” + #展开任务列表call)
dm.AsmCall (HWND, 1)
退出许可区 (许可证)
.如果真结束
' 调试输出 ((读内存整数 (HWND, 任务列表 + 十六到十 (“1A8”)) - 任务头) ÷ 4)
加入成员 (_任务, 任务文本)
任务数量 = 任务数量 + 1
.判断循环尾 ()
|
|