.版本 2
.支持库 EThread
.程序集 插件
.程序集变量 线程句柄_窗口探测, 整数型
.子程序 _启动子程序, 整数型
ET.添加事件处理 (#事件标识_插件启用, &事件_插件启用)
ET.添加事件处理 (#事件标识_插件停用, &事件_插件停用)
返回 (0)
.子程序 插件信息, 整数型, 公开
返回 (生成插件信息 (“插件名称”, “插件备注”, “1.0”, “插件作者”, , ))
.子程序 事件_插件启用
进程ID = 进程_取自进程ID ()
.如果真 (IDE_地址初始化 () = 假)
返回 ()
.如果真结束
启动线程 (&线程_窗口探测, , 线程句柄_窗口探测)
.子程序 事件_插件停用
强制结束线程 (线程句柄_窗口探测)
恢复所有消息事件 ()
.子程序 恢复所有消息事件
.局部变量 窗口数量, 整数型
.局部变量 i, 整数型
窗口数量 = 取数组成员数 (所有窗口)
.计次循环首 (窗口数量, i)
SetWindowLongA (所有窗口 [窗口数量 - i + 1].代码框句柄, -4, GetPropA (所有窗口 [窗口数量 - i + 1].代码框句柄, “LineNumber_Proc”))
.计次循环尾 ()
.子程序 IDE_地址初始化, 逻辑型
.局部变量 数据, 字节集
.局部变量 版本, 小数型
.局部变量 索引, 整数型
.局部变量 i, 整数型
.局部变量 起始地址, 整数型
.局部变量 数据长度, 整数型
.局部变量 剩余长度, 整数型
起始地址 = 4194304
数据长度 = 2000000
数据 = 指针到字节集 (起始地址, 数据长度)
间距地址 = 寻找字节集 (数据, { 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 244, 255, 255, 255 }, )
.如果真 (间距地址 = -1)
ET.输出文本 (“初始化失败”, 真)
返回 (假)
.如果真结束
剩余长度 = 数据长度 - 间距地址
间距地址 = 间距地址 + 起始地址 - 2
索引 = 间距地址
.计次循环首 (剩余长度, i)
.如果真 (指针到字节集 (索引 + i, 4) = { 1, 0, 0, 0 })
.如果真 (指针到字节集 (索引 + i + 7, 1) = { 0 })
.如果真 (指针到字节集 (索引 + i + 12, 4) = { 6, 0, 0, 0 })
单行高度地址 = 索引 + i + 16
跳出循环 ()
.如果真结束
.如果真结束
.如果真结束
.计次循环尾 ()
.如果真 (单行高度地址 = 0)
ET.输出文本 (“初始化失败”, 真)
返回 (假)
.如果真结束
ET.输出文本 (“初始化成功”, 真)
返回 (真)
.子程序 线程_窗口探测
.局部变量 窗口数量, 整数型
.局部变量 i, 整数型
.局部变量 rcWnd, 精易_矩形
.局部变量 窗口句柄, 整数型
.局部变量 hProc, 整数型
.判断循环首 (真)
功能_取窗口句柄 ()
窗口数量 = 取数组成员数 (所有窗口)
.计次循环首 (窗口数量, i)
SetPropA (所有窗口 [窗口数量 - i + 1].代码框句柄, “Obj_index”, 窗口数量 - i + 1)
.判断开始 (IsWindow (所有窗口 [窗口数量 - i + 1].代码框句柄) = 0)
删除成员 (所有窗口, 窗口数量 - i + 1, )
跳出循环 ()
.判断 (所有窗口 [窗口数量 - i + 1].是否开启 = 假)
SetPropA (所有窗口 [窗口数量 - i + 1].代码框句柄, “LineNumber_LineWidth”, 45)
所有窗口 [窗口数量 - i + 1].接口_IDE代码编辑框管理 = 接口_获取IDE代码编辑框管理 ()
所有窗口 [窗口数量 - i + 1].接口_IDE代码编辑框管理.初始化 (所有窗口 [窗口数量 - i + 1].代码框句柄)
hProc = SetWindowLongA (所有窗口 [窗口数量 - i + 1].代码框句柄, -4, 到整数 (&LineNumber_OnMessage))
SetPropA (所有窗口 [窗口数量 - i + 1].代码框句柄, “LineNumber_Proc”, hProc)
所有窗口 [窗口数量 - i + 1].是否开启 = 真
跳出循环 ()
.默认
.判断结束
程序_延时 (5)
.计次循环尾 ()
程序_延时 (100)
.判断循环尾 ()
.子程序 功能_取窗口句柄
.局部变量 顶层句柄, 整数型
.局部变量 一级窗口, 整数型, , "0"
.局部变量 二级窗口, 整数型
.局部变量 三级窗口, 整数型, , "0"
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 dwStyle, 整数型
.局部变量 窗口结构, 窗口结构
.局部变量 重复, 逻辑型
顶层句柄 = 进程_ID取窗口句柄 (进程ID, , “ENewFrame”)
.如果真 (顶层句柄 = 0)
返回 ()
.如果真结束
顶层句柄 = 窗口_取句柄 (顶层句柄, , “MDIClient”, )
.如果真 (顶层句柄 = 0)
返回 ()
.如果真结束
窗口_枚举子窗口 (顶层句柄, 一级窗口)
.计次循环首 (取数组成员数 (一级窗口), i)
二级窗口 = 窗口_取句柄 (一级窗口 [i], , )
重复 = 假
.计次循环首 (取数组成员数 (所有窗口), j)
.如果真 (所有窗口 [j].顶层句柄 = 二级窗口)
重复 = 真
.如果真结束
.计次循环尾 ()
.如果真 (重复 = 假)
窗口_枚举子窗口 (二级窗口, 三级窗口)
窗口结构.顶层句柄 = 0
窗口结构.滚动条句柄 = 0
窗口结构.代码框句柄 = 0
.计次循环首 (取数组成员数 (三级窗口), j)
dwStyle = GetWindowLongA (三级窗口 [j], -16) ' #GWL_STYLE
.如果真 (位与 (dwStyle, 1) = 1) ' #SBS_VERT
窗口结构.顶层句柄 = 二级窗口
窗口结构.滚动条句柄 = 三级窗口 [j]
.如果真结束
.如果真 (窗口_取类名 (三级窗口 [j]) = “Afx:400000:8:10003:1900015:0”)
窗口结构.绘制框句柄 = 三级窗口 [j]
窗口结构.代码框句柄 = 窗口_取句柄 (三级窗口 [j])
.如果真结束
.计次循环尾 ()
.如果真 (窗口结构.滚动条句柄 ≠ 0 且 窗口结构.代码框句柄 ≠ 0)
加入成员 (所有窗口, 窗口结构)
.如果真结束
.如果真结束
程序_延时 (5)
.计次循环尾 ()