找回密码
 加入
搜索
查看: 2268|回复: 5

有没有办法列举某一窗口上的所有控件呢?

[复制链接]
发表于 2008-5-13 21:46:39 | 显示全部楼层 |阅读模式
有没有办法列举某一窗口上的所有控件呢?也就是找到某一窗口的所有控件。


有替代的办法。
AutoItSetOption("WinDetectHiddenText", 1)

+
wingettext()

[ 本帖最后由 jiataifeng 于 2008-5-16 19:35 编辑 ]
发表于 2008-5-14 10:02:54 | 显示全部楼层

你去搜索以下“窗口手术师” 的源代码,就知道了
 楼主| 发表于 2008-5-14 10:33:53 | 显示全部楼层
谢谢回复。不过没有找到源代码。
楼上能传一下吗
发表于 2008-5-14 12:53:42 | 显示全部楼层
源代码在 http://www.au3.net.cn/ShowPost.asp?ThreadID=1991 。但好像下不了了
关键的函数在线下面,返回窗口标题为$title的所有控件的数组。

Func _GetClasses($title)
;Get array of each control
    Local  $buttonCount = 0, $editCount = 0, $staticCount = 0, $i
    Local $classes = StringSplit(  WinGetClassList($title) , @LF)
    Local  $classIDs[$classes[0]+1]
        Local $count[1][2]
    $classIDs[0] = $classes[0]
    For $i = 1 to $classes[0]
      Select
      Case $classes[$i] = "Button"
                $buttonCount = $buttonCount + 1
                $classIDs[$i] = $classes[$i] & $buttonCount
      Case $classes[$i] = "Edit"
        $editCount = $editCount + 1
        $classIDs[$i] = $classes[$i] & $editCount
        $classes[$i] = "Input"
      Case $classes[$i] = "Static"
        $staticCount = $staticCount + 1
        $classIDs[$i] = $classes[$i] & $staticCount
                $classes[$i] = "Label"
     Case Else
        If StringStripWS($classes[$i],3) <> "" Then
                        $back = _Name2Link($classes[$i],$count)
                        If $back = 0 Then
                                ReDim $count[UBound($count)+1][2]
                                $count[UBound($count)-1][0] = $classes[$i]
                                $count[UBound($count)-1][1] = 1
                                $classIDs[$i] = $classes[$i] & 1
                        Else
                                $classIDs[$i] = $count[$back][0] & ($count[$back][1]+1)
                                $count[$back][1] +=1
                        EndIf
                EndIf
      EndSelect
          Next
          Local $classIDs2[1]
          For $i = 1 to $classIDs[0]
                If StringStripWS($classIDs[$i],3) <> "" Then
                        ReDim $classIDs2[UBound($classIDs2)+1]
                        $classIDs2[UBound($classIDs2)-1] = $classIDs[$i]
                EndIf
          Next

;Display the results
    Local $output = ""
    For $i = 1 to UBound($classIDs2) -1
                $output = $output & $classIDs2[$i] & @LF
    Next
    Return $output
EndFunc

[ 本帖最后由 cai_super 于 2008-5-14 13:04 编辑 ]

本帖子中包含更多资源

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

×
 楼主| 发表于 2008-5-14 19:20:22 | 显示全部楼层
谢谢你!谢谢你!
发表于 2008-5-27 11:58:01 | 显示全部楼层
下下来研究
学习学习
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-3-29 06:30 , Processed in 0.077398 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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