找回密码  加入

AUTOIT CN

搜索
查看: 178|回复: 6

Treelist 控件 扩展文本如何获取

[复制链接]
发表于 2021-4-12 13:49:39 | 显示全部楼层 |阅读模式
如图所示,我想获取控件类名为:TreeList1   状态标题所对应的文本内容(未连接,或者预览等),代码如下
  1. #include <GuiTreeView.au3>
  2. WinActivate('目标窗口')
  3. $Whandle = ControlGetHandle("目标窗口", "", "TreeList1")
  4. ControlTreeView("目标窗口","", "TreeList1",'Select','#0')
  5. $hItem=_GUICtrlTreeView_GetSelection($Whandle)
  6. $text1=_GUICtrlTreeView_GetText($Whandle,$hItem)
  7. MsgBox(0,'',$text1)
复制代码
这样可以获取 主项目1的文本:“所有设备”
但是如何获取主项目1的子项目—— 状态标题  所对应的文本内容呢,更改 ControlTreeView("目标窗口","", "TreeList1",'Select','#0|#0')   获取的文本内容为空 ,这个状态 文本还属于TreeList1 控件内的文本吗 ?  麻烦各位大佬帮忙指点一下,感谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入

x
发表于 2021-4-12 14:28:10 | 显示全部楼层
TreeList 不是 windows 标准控件,获取不到很正常。
不过仍可尝试,只能靠自己。多加 ConsoleWrite 调试点,这是基本调试过程。MsgBox 并不一定显示所有数据,比如遇不可打印字符则会截断。
  1. #include <GuiTreeView.au3>
  2. WinActivate('目标窗口')
  3. $Whandle = ControlGetHandle("目标窗口", "", "TreeList1")
  4. ControlTreeView("目标窗口", "", "TreeList1", 'Select', '#0')
  5. $hItem = _GUICtrlTreeView_GetSelection($Whandle)
  6. ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hItem = ' & $hItem & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
  7. $text1 = _GUICtrlTreeView_GetText($Whandle, $hItem)
  8. ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $text1 = ' & $text1 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
复制代码
 楼主| 发表于 2021-4-12 15:21:26 | 显示全部楼层
本帖最后由 itzyx 于 2021-4-12 15:23 编辑
afan 发表于 2021-4-12 14:28
TreeList 不是 windows 标准控件,获取不到很正常。
不过仍可尝试,只能靠自己。多加 ConsoleWrite 调试点 ...

好的, 原来MsgBox不可打印字符还会截断嘛,学习了。
之前说的采色法在不同系统环境采色可能不同,受多方面因素影响嘛,所以转思路获取控件文本试试,  现在看来也很难行得通,不过为啥 Treelist  子项文本像是 listview 用"|" 分开了,感觉不分开就能读取了
发表于 2021-4-14 20:32:19 | 显示全部楼层
itzyx 发表于 2021-4-12 15:21
好的, 原来MsgBox不可打印字符还会截断嘛,学习了。
之前说的采色法在不同系统环境采色可能不同,受多方 ...

上面的代码是让你看看控制台输出栏显示了什么……
 楼主| 发表于 2021-4-15 09:26:22 | 显示全部楼层
本帖最后由 itzyx 于 2021-4-15 09:34 编辑
afan 发表于 2021-4-14 20:32
上面的代码是让你看看控制台输出栏显示了什么……

额,A大不好意思,才看到 ControlTreeView("高速采集控制系统", "", "TreeList1", 'Select', '#0|#0')
输出结果:
@@ Debug(28) : $hItem = 0x0000000000000002
>Error code: 0
@@ Debug(30) : $text1 =
>Error code: 0


ControlTreeView("高速采集控制系统", "", "TreeList1", 'Select', '#0')
输出结果:
@@ Debug(28) : $hItem = 0x0000000000000001
>Error code: 0
@@ Debug(30) : $text1 = &#825;&#1296;&#680;&#1144;
>Error code: 0


如果选取子项,只获取到了句柄,没有文本
发表于 2021-4-15 10:00:55 | 显示全部楼层
本帖最后由 afan 于 2021-4-15 10:07 编辑
itzyx 发表于 2021-4-15 09:26
额,A大不好意思,才看到 ControlTreeView("高速采集控制系统", "", "TreeList1", 'Select', '#0|#0')
...

那就估计是获取不到列表项目了,你可以再挣扎一下,试试用 _GUICtrlTreeView_FindItem …… 甚至是 _GUICtrlListView_* ,比如 _GUICtrlListView_FindText 之类
 楼主| 发表于 2021-4-15 10:45:52 | 显示全部楼层
afan 发表于 2021-4-15 10:00
那就估计是获取不到列表项目了,你可以再挣扎一下,试试用 _GUICtrlTreeView_FindItem …… 甚至是 _GUIC ...

哈哈 我基础差,我对着帮助列表,把 _GUICtrlTreeView_* 感觉能试的函数都试了一遍, 行,我回头再试试 _GUICtrlListView_*,谢谢A大了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2021-5-7 18:01 , Processed in 0.140625 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表