aardio 文档
winex.ctrl.treeview 库模块帮助文档
使用说明
绑定外部进程的标准 SysTreeView32 控件,复用 win.ui.ctrl.treeview 的节点导航、
遍历、查找、选中、展开、折叠等方法。文本使用 Unicode,结构体和文本缓冲区均在目标进程中分配。
- 当前支持 32 位目标进程(包括 64 位 Windows 上的 32 位程序)。64 位目标会明确返回 null,err,避免截断 HTREEITEM。
- 构造失败返回 null,err。目标程序权限高于调用方时,需要以相同权限运行调用方。
- 节点句柄是 pointer,窗口句柄 hwnd 是数值。不要将目标进程中的地址作为本地指针解引用。
- getItem/setItem 支持 TVITEMW 的基本字段,不支持 TVITEMEX。
- getItemData/setItemData 是调用方本地的关联数据。外部节点的原生 lParam 请通过 getItem/setItem 的 mask=4 访问;不要解引用该地址。
- 不支持外部窗口的 onnotify/onSelChanged 等事件,不应调用通知结构解析方法或设置本地 imageList。
- free() 仅释放本对象持有的进程资源。不要用 close() 释放绑定,它会关闭目标控件。
- each/enum 仅遍历已经存在的节点,不自动展开。find 多级查找会展开途中节点,expandAll 会主动展开整棵子树,目标程序可能因此加载大量数据。
使用指南
winex.ctrl 成员列表 #
winex.ctrl.treeview #
用于控制外部进程的标准树形控件
当前支持32位目标进程,不支持外部窗口事件
winex.ctrl.treeview() #
返回对象:winexTreeviewObject
winex.ctrl.treeview(外部进程树控件句柄) #
绑定 SysTreeView32 控件
失败返回 null,err
winexTreeviewObject 成员列表 #
winexTreeviewObject.checkAll(节点句柄,是否勾选) #
设置子树复选框并更新祖先状态
winexTreeviewObject.clear(节点句柄) #
清空指定节点的子节点;省略参数删除全部节点
winexTreeviewObject.collapse(节点句柄) #
折叠节点,省略节点使用选中项
winexTreeviewObject.count #
当前已存在的节点总数
winexTreeviewObject.delItem(节点句柄) #
删除节点及其子树;此操作会改变目标程序数据
winexTreeviewObject.each(父节点句柄) #
返回直接子节点迭代器:for hItem in tv.each(parent){},省略父节点表示根层
winexTreeviewObject.ensureVisible(节点句柄) #
展开祖先并滚动到指定节点
winexTreeviewObject.enum(回调函数,父节点句柄) #
深度遍历已有子节点;回调(hItem,parent)返回false停止
winexTreeviewObject.enumParent(回调函数,节点句柄) #
向上遍历祖先;回调(parent,child)返回false停止
winexTreeviewObject.expand(节点句柄) #
展开节点,省略节点使用选中项
winexTreeviewObject.expandAll(节点句柄) #
先展开父节点再递归展开所有子节点;省略节点展开整棵树,可能加载大量数据
winexTreeviewObject.find(父节点,子项文本,...) #
按精确文本逐级查找,父节点参数可省略;会展开途中的父节点
winexTreeviewObject.findPath(父节点,路径字符串) #
按反斜杠分隔的路径逐级查找,父节点参数可省略
winexTreeviewObject.free() #
释放进程控制句柄与临时资源,不关闭目标程序或控件
winexTreeviewObject.getChecked(节点句柄) #
返回复选框勾选状态,无状态图像时为false
winexTreeviewObject.getChildItem(节点句柄) #
返回第一个子节点
winexTreeviewObject.getChildren(父节点句柄) #
返回直接子节点句柄数组,省略父节点表示根层
winexTreeviewObject.getFirst() #
返回第一个根节点,节点句柄为pointer
winexTreeviewObject.getFirstVisible() #
返回第一个可见节点
winexTreeviewObject.getItem(节点句柄或TVITEM属性表) #
读取外部节点的基本TVITEMW字段
默认读取文本,mask=0x7F可读取全部基本字段;返回包含text等字段的结构体
winexTreeviewObject.getItemData(节点句柄) #
获取调用方本地关联数据,并非目标节点原生lParam
winexTreeviewObject.getItemPath(节点句柄) #
返回从根到指定节点的文本路径;省略节点使用选中项
winexTreeviewObject.getItemRect(节点句柄,仅文本区域) #
返回控件客户区设备像素矩形,失败返回null
返回对象:rectObject
winexTreeviewObject.getItemState(节点句柄,状态掩码) #
获取节点状态,默认掩码为0xF000
winexTreeviewObject.getItemText(节点句柄,缓冲区长度) #
读取Unicode节点文本,省略节点使用选中项
省略长度时自动扩容至最多32768个UTF-16单元;指定长度时允许截断
winexTreeviewObject.getNextItem(节点句柄,TVGN选项) #
按TVGN选项返回相关节点,默认后一个兄弟节点
winexTreeviewObject.getNextSibling(节点句柄) #
返回后一个兄弟节点
winexTreeviewObject.getNextVisible(节点句柄) #
返回后一个可见节点
winexTreeviewObject.getParentItem(节点句柄) #
返回父节点
winexTreeviewObject.getPrevSibling(节点句柄) #
返回前一个兄弟节点
winexTreeviewObject.getPrevVisible(节点句柄) #
返回前一个可见节点
winexTreeviewObject.getRoot() #
返回_TVI_ROOT伪句柄,不是真实节点
winexTreeviewObject.getSelection() #
返回当前选中节点
winexTreeviewObject.hitTest(x,y,是否屏幕坐标) #
返回节点句柄和TVHT标志;坐标使用设备像素,允许0坐标
winexTreeviewObject.hwnd #
外部树控件窗口句柄(数值)
winexTreeviewObject.insertItem(文本或节点表或数组,父节点,前一兄弟节点) #
插入Unicode节点,支持children子树;成功返回新节点句柄
winexTreeviewObject.isExpanded(节点句柄) #
返回是否已展开
winexTreeviewObject.isExpandedOnce(节点句柄) #
返回是否曾经展开
winexTreeviewObject.process #
目标进程控制对象
返回对象:processObject
winexTreeviewObject.setChecked(节点句柄,是否勾选) #
设置复选框状态,默认勾选
winexTreeviewObject.setItem(TVITEM属性表) #
修改外部节点,自动推断mask;成功返回true
winexTreeviewObject.setItemData(节点句柄,数据) #
保存调用方本地关联数据,不向目标进程传递aardio对象
winexTreeviewObject.setItemState(节点句柄,状态,状态掩码) #
修改节点状态,默认掩码为0xF000
winexTreeviewObject.setItemText(节点句柄,文本) #
设置节点文本;也可仅传文本修改当前选中节点
winexTreeviewObject.setSelected(节点句柄) #
选中节点;省略节点清除选中
winexTreeviewObject.threadId #
目标控件线程ID
winexTreeviewObject.toggle(节点句柄) #
切换展开或折叠状态
winexTreeviewObject.visibleCount #
控件客户区可容纳的可见行数
Markdown 格式