To get all controls in window I use script from forum, but there is problem if window have control with some names script get handle from first name like that:
[25]
Button1
0x000D0446
[28]
Button1
0x000D0446
[41]
Button1
0x000D0446
[17]
Button2
0x001902B0
[18]
Button3
0x003B0210
[9]
ComboBox1
0x004D02F4
[19]
ComboBox1
0x004D02F4
[21]
ComboBox1
0x004D02F4
[30]
ComboBox1
0x004D02F4
[35]
ComboBox1
0x004D02F4
[6]
Edit1
0x0017031A
[8]
Edit1
0x0017031A
[20]
Edit1
0x0017031A
[27]
Edit1
0x0017031A
[29]
Edit1
0x0017031A
[36]
Edit1
0x0017031A
Any ideas ?
#include "Array.au3" Opt("WinTitleMatchMode", 4) $aArray = _WinGetControls('[CLASS:.......]') _ArrayDisplay($aArray) Func _WinGetControls($Title, $Text="") Local $WndControls, $aControls, $sLast="", $n=1 $WndControls = WinGetClassList($Title, $Text) $aControls = StringSplit($WndControls, @CRLF) Dim $aResult[$aControls[0]+1][2] For $i = 1 To $aControls[0] If $aControls[$i] <> "" Then If $sLast = $aControls[$i] Then $n+=1 Else $n=1 EndIf $aControls[$i] &= $n $sLast = StringTrimRight($aControls[$i],1) EndIf If $i < $aControls[0] Then $aResult[$i][0] = $aControls[$i] Else ; last item in array $aResult[$i][0] = WinGetTitle($Title) ; return WinTitle EndIf $aResult[$i][1] = ControlGetHandle($Title, $Text, $aControls[$i]) Next $aResult[0][0] = "ClassnameNN" $aResult[0][1] = "Handle" Return $aResult EndFunc