【问题标题】:How to expand a tree view using AutoIt如何使用 AutoIt 展开树视图
【发布时间】:2016-09-30 07:51:15
【问题描述】:

界面如下:

“AutoIt Window Info”工具只能定位红色(红色矩形区域)的元素,无法定位子项。 那么如何扩展或操作这些项目呢?

【问题讨论】:

  • 如果是普通的TreeView32控件可以使用ControlTreeView函数。由于您的控件类是 SysTreeView32,它应该很可能工作......

标签: autoit


【解决方案1】:

通常也可以使用击键访问 Windows 控件。

在屏幕转储中选择了 Farmtt 元素。这将是您的起点。

你可以试试:

  • Send("{DOWN}") 向下移动一个元素。
  • Send("{TAB}") 导航到下一个控件(按钮、复选框等)
  • Send("{NumPadMult}") 递归展开 SysTreeView32 中的文件夹。
  • Send("{ENTER}") 主键盘上的 ENTER 键

等等

参考:
https://www.autoitscript.com/autoit3/docs/appendix/SendKeys.htm

【讨论】:

  • 如果节点展开时存在加载时间,在树中使用这些热键可能会很麻烦。
【解决方案2】:

这里有两件事: 1)使用如下代码sn-p:

;Gets the handle for the text
Func readFirstlevelTreeNodes($hWndCtrl)
   Local $firstItemHandle = _GUICtrlTreeView_GetFirstItem ($hWndCtrl)
   Local $iCount = _GUICtrlTreeView_GetSiblingCount( $hWndCtrl, $firstItemHandle )
   Dim $aRet[$iCount]
   $aRet[0] = $firstItemHandle
   For $index = 1 To $iCount - 1
      $aRet[$index] = _GUICtrlTreeView_GetNextSibling ( $hWndCtrl, $firstItemHandle )
      $firstItemHandle = $aRet[$index]
   Next

   getTreeNodeTextList($hWndCtrl,$aRet)
EndFunc

; Gets the text for given sibling node handle lists
Func getTreeNodeTextList($hWndCtrl,$aRet)
   ConsoleWrite("Tree Node first level list"&@CRLF)
   For $index = 0 To Ubound($aRet) -1
      ConsoleWrite(_GUICtrlTreeView_GetText ( $hWndCtrl, $aRet[$index] )&@CRLF)
   Next
EndFunc

您可能会看到第一级树节点的输出。

2) 如果您仍然看不到输出,请验证控制句柄值和窗口句柄。如果它们是正确的并且它仍然没有显示第一级树节点,那么请尝试以管理员身份运行您的 sciTE 编辑器。

我认为这应该会有所帮助。

【讨论】:

    猜你喜欢
    • 2013-06-05
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2011-07-25
    • 2020-04-02
    相关资源
    最近更新 更多