【问题标题】:Search tree and select items搜索树并选择项目
【发布时间】:2013-06-13 02:39:33
【问题描述】:

你知道如何扫描一棵树并选择一个项目吗?例如是 autoit 帮助文件。我展开所有树,它接下来要做的是扫描名称中带有“历史”的项目。如果为真,它必须选择它并休眠 5 秒,然后继续选择它找到的下一个项目,直到结束循环。

Global $hWnd = ControlGetHandle("[CLASS:HH Parent;TITLE:AutoIt Help]", "", "[CLASS:SysTreeView32; INSTANCE:1]")

$hItemFound = _GUICtrlTreeView_FindItem($hWnd, "History",True)

_GUICtrlTreeView_SelectItem($hWnd, $hItemFound)

【问题讨论】:

    标签: autoit


    【解决方案1】:

    就这么简单:

    #include <GuiTreeView.au3>
    
    Global $hWnd = ControlGetHandle("[CLASS:HH Parent;TITLE:AutoIt Help]", _
                                    "", "[CLASS:SysTreeView32; INSTANCE:1]")
    
    $searchText = "History"
    $hItemFound = _GUICtrlTreeView_FindItem($hWnd, $searchText, True)
    While $hItemFound
       _GUICtrlTreeView_SelectItem($hWnd, $hItemFound)
       $next = _GUICtrlTreeView_GetNextVisible($hWnd, $hItemFound)
       $hItemFound = _GUICtrlTreeView_FindItem($hWnd, $searchText, True, $next)
       Sleep(5000)
    WEnd
    

    顺便说一句,您可以使用_GUICtrlTreeView_GetNext(...) 代替,不仅可以搜索可见的下一个条目,还可以搜索可能折叠的条目。 ..._FindItem 无论如何都会搜索折叠的项目。

    除了_GUICtrlTreeView_SelectItem(...) 之外,您可能还想使用_GUICtrlTreeView_ClickItem(...) 来通过选择执行正确的操作。

    【讨论】:

    • 谢谢!这完美无缺:) 虽然ClickItem 实际上没有工作/单击项目?无论如何,我想我还是会使用 SelectItem。
    • 如果它必须同时搜索带有“历史”和“胜利”的文本呢?我必须使用数组吗?
    • 只搜索“历史”,然后输入If StringInStr(_GUICtrlTreeView_GetText($hWnd, $hItemFound), "Win") Then ... EndIf
    • 我刚刚编辑了上面的答案。您必须同时执行这两个操作,首先是 ...SelectItem(...),其次是 ...ClickItem(...),才能执行操作。
    • 这也很简单。您只需要在 AutoIt 的 Includes 文件夹中的 GuiTreeView.au3 中调整来自 _GUICtrlTreeView_FindItem(...) 的代码。如果您这样做需要帮助,最好在这里提出一个关于这些 cmets 的新问题...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2014-05-14
    • 2017-07-06
    • 1970-01-01
    • 2015-09-16
    相关资源
    最近更新 更多