Что нового

Как управлять элементами со схожими данными Control

vovsla

Осваивающий
Сообщения
607
Репутация
36
В одном окне есть 2 схожих элемента:
Элемент 1
>>>> Window <<<<
Title: Инвентарные Акты
Class: WindowsForms10.Window.8.app1b
Position: 16, 19
Size: 1271, 941
Style: 0x16CF0000
ExStyle: 0x00050100
Handle: 0x02F4136E

>>>> Control <<<<
Class: WindowsForms10.Window.8.app1b
Instance: 1
ClassnameNN: WindowsForms10.Window.8.app1b1
Name: objGrid
Advanced (Class): [NAME:shok:bjGrid]
ID: 74060976
Text:
Position: 0, 74
Size: 599, 484
ControlClick Coords: 292, 182
Style: 0x5E010000
ExStyle: 0x00010000
Handle: 0x046A14B0

Элемент 2
>>>> Window <<<<
Title:
Class: WindowsForms10.Window.8.app1b
Position: 635, 513
Size: 300, 200
Style: 0x16840000
ExStyle: 0x00010180
Handle: 0x017C075A

>>>> Control <<<<
Class: WindowsForms10.Window.8.app1b
Instance: 1
ClassnameNN: WindowsForms10.Window.8.app1b1
Name:
Advanced (Class): [CLASS:WindowsForms10.Window.8.app1b; INSTANCE:1]
ID: 52956426
Text:
Position: 0, 0
Size: 284, 184
ControlClick Coords: 98, 78
Style: 0x56010000
ExStyle: 0x00000000
Handle: 0x03280D0A

При попытке получить данные элемента 2 с помощью кода
Код:
$WHFrom=ControlGetPos('', '', '[Class:WindowsForms10.Window.8.app1b; INSTANCE:1]')
_ArrayDisplay($WHFrom)

чаще всего я получаю данные элемента 1, а иногда элемента 2.
Как можно в данной ситуации стабильно работать с элементом 2?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Vovsla [?]
стабильно работать с элементом 2
Попробуйте так
Код:
ControlGetHandle('Инвентарные Акты', '', '[NAME:objGrid]') ; Элемент 1

$list = WinList("[CLASS:WindowsForms10.Window.8.app1b]")
For $i = 1 To $list[0][0]
  If $list[$i][0] = "" And BitAND(WinGetState($list[$i][1]), 2) Then ExitLoop
Next
ControlGetHandle($list[$i][1], '', 'WindowsForms10.Window.8.app1b1') ; Элемент 2
 
Верх