转自ahk8 @wz520 TVPath - 设置/获取 TreeView 选中项目的路径(10-10-11 更新)

许多实用脚本和封装函数, 可以让您编写脚本更加便捷高效

Moderators: tmplinshi, arcticir

liangdl
Posts: 3
Joined: 24 Sep 2014, 16:24

转自ahk8 @wz520 TVPath - 设置/获取 TreeView 选中项目的路径(10-10-11 更新)

17 Jan 2015, 22:41

原ahk8的链接已失效,发pm给原作者@wz520后他把附件给了我,现在放上来看谁需要吧,下面的链接已失效

官网某个脚本也有类似的功能(Remote TreeView)
http://www.autohotkey.com/forum/viewtopic.php?t=12381
这个RTV.ahk还要1个别人的库,然而下了这个库后,AHK报错,说调用某个函数参数数量太少。
无心研究,遂自己写一个,反正我也只要 GetPath 和 SetPath。

我这个TVPath.ahk不需要任何别人的库。使用时只需要在你的脚本中 #include TVPath.ahk 即可。也可以把 TVPath.ahk 拷贝到 autohotkey/lib 目录,这样就不需要 #include 了(具体看AHK帮助中关于用户库的说明)。

库中有2个函数

TVPath_Get(hTreeView, ByRef outPath, Delimiter="\")
TVPath_Set(hTreeView, inPath, ByRef outMatchPath, EscapeChar="", Delimiter="\", RetryTimesForGetChild=0, NoSelection=False)

Vim生成的HTML版脚本:
http://www.autohotkey.net/~wingzero520/TVPath.ahk.html

示例1, 获取注册表编辑器的TreeView选中项目的路径

Code: Select all

SetTitleMatchMode, 2
ControlGet, hwnd, hwnd, , SysTreeView321, 注册表编辑器

if( (ret:=TVPath_Get(hwnd, outPath))="")
        MsgBox outPath=%outPath%
else
        MsgBox % ret
return
示例2,在注册表编辑器中打开 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
简体中文WINDOWS有效,其他WINDOWS请自行更改脚本中的中文。

Code: Select all

SetTitleMatchMode, 2
inPath=我的电脑\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
WinActivate, 注册表编辑器
ControlGet, hwnd, hwnd, , SysTreeView321, 注册表编辑器

if( (ret:=TVPath_Set(hwnd, inPath, matchPath))="")
        MsgBox matchPath=%matchPath%
else
        MsgBox % ret

return
示例代码与 TVPath.ahk 在简体中文 Windows XP SP2 下测试通过。

--------------------------------
更新历史:
15-1-18
只是貌似对 WIN7 上的某些 SysTreeView32 控件无效(比如资源管理器左边的目录树)
10-11
用 GenDocs 生成了函数说明文档放到 Autohotkey.net,这样这个帖子能短点 :)
支持自定义路径分隔符。
解决 Set 函数选择资源管理器树有时只能选择前几层节点的问题,详情请看 TVPath_Set()帮助
10-06
自己的疏忽造成的低级bug: 只检查了RegExMatch()的errorlevel,而没检查返回值.,导致只要用到正则永远都只会选中第一个节点...感谢 热土流风 指出。
9-20:
TVPath_Set() 的功能大幅度强化,不仅应 maxspeedwind的要求实现了按序号匹配,还可以用正则表达式,甚至可以自己写回调函数来匹配。

感谢@wz520提供的源文件
Attachments
TVPath.zip
(23.17 KiB) Downloaded 482 times
wz520
Posts: 29
Joined: 01 Jan 2014, 21:32
Location: China

Re: 转自ahk8 @wz520 TVPath - 设置/获取 TreeView 选中项目的路径(10-10-11 更

20 Jan 2015, 19:53

哦哦,感谢楼主帮忙转帖 :D

顺便说一下压缩包里的 TVGetSet.ahk 是一个测试脚本,按 #!g 可以获取鼠标指针下 SysTreeView32 控件选中项目的路径。
tsingkong
Posts: 2
Joined: 13 May 2015, 23:48

Re: 转自ahk8 @wz520 TVPath - 设置/获取 TreeView 选中项目的路径(10-10-11 更新)

13 May 2015, 23:50

多谢楼主转贴。可惜官网 Remote TreeView 的链接也打不开了
tmplinshi
Posts: 1604
Joined: 01 Oct 2013, 14:57

Re: 转自ahk8 @wz520 TVPath - 设置/获取 TreeView 选中项目的路径(10-10-11 更新)

14 May 2015, 01:22

tsingkong wrote:多谢楼主转贴。可惜官网 Remote TreeView 的链接也打不开了
要翻墙
tsingkong
Posts: 2
Joined: 13 May 2015, 23:48

Re: 转自ahk8 @wz520 TVPath - 设置/获取 TreeView 选中项目的路径(10-10-11 更新)

14 May 2015, 22:40

tmplinshi wrote:
tsingkong wrote:多谢楼主转贴。可惜官网 Remote TreeView 的链接也打不开了
要翻墙
翻墙报 Host Error。
另外,我修改了一下,现在支持Unicode了,更新记录如下:
;TVPath v1.1 based on wz520 v1.0 Patched by TSiNGKONG [tsingkong~gmail.com] 2015-05-15
; 1. 本文件使用 UTF-16le 编码保存
; 2. 兼容 Unicode 与 非Unicode TreeView
; 3. 兼容 AutoHotkeyA32, AutoHotkeyU32; 其他未测试
Attachments
TVPath_1.1_TSiNGKONG.zip
(5.59 KiB) Downloaded 533 times

Return to “脚本函数”

Who is online

Users browsing this forum: No registered users and 12 guests