Есть окно приложения. Внутри него есть область в которой открываются свои окна. Этих окошек можно открыть разное количество и с разными размерами. Хочу их упорядочить с помощью AutoIT.
Дескриптор этих окошек получается получить. Там их даже три на одно окошко. А вот кликнуть мышкой, установить фокус, переместить/изменить размер, не получается.
А после выполнения скрипта, к тому же, в этих окошка замирает изображения. И восстановить получается только свернув его и заново восстановив.
Подскажите, какие ещё есть способы перемещения?
Код:
Opt("PixelCoordMode", 2) ;1=абсолютные, 0=относительные, 2=клиентские
Dim $aAfx[1]
If Not WinExists("[CLASS:MT::4.00]") Then
MsgBox(0, "Поиск окна", "Окно MT не найдено")
Exit
EndIf
$hWnd = WinActivate("[CLASS:MT::4.00]")
$hWnd = WinWaitActive($hWnd, "", 5) ; без таймаута (5) ожидание бесконечно
If Not $hWnd Then
MsgBox(4096, 'Активирование окна', 'Ошибка активирования окна, завершаем работу скрипта')
Exit
EndIf
$hMdiClient = ControlGetHandle($hWnd, "", "[CLASS:MDIClient; INSTANCE:1]")
If Not $hMdiClient Then
MsgBox(4096, 'Дескриптор', 'Ошибка получения дескриптора, завершаем работу скрипта')
Exit
EndIf
$aPosMdiClient = ControlGetPos($hWnd, '', $hMdiClient)
$i = 0
While 1
$i += 1
$hAfx = ControlGetHandle($hMdiClient, "", "[INSTANCE:" & $i & "]")
If Not @error Then
$aAfx[$i-1] = $hAfx
ReDim $aAfx[$i+1]
;~ $aPosAfx = ControlGetPos($hWnd, '', $hAfx)
;~ ConsoleWrite("INSTANCE: " & $i & " " & $hAfx & " X = " & $aPosAfx[0] & " Y = " & $aPosAfx[1] & " Ширина = " & $aPosAfx[2] & " Высота = " & $aPosAfx[3] & @LF)
Else
ExitLoop
EndIf
WEnd
$Kol = ($i-1) / 3
$iWidth = $aPosMdiClient[3] / $Kol ; Ширина
$iHeight = $aPosMdiClient[3] / 2 ; Высота
For $i = 0 To $Kol-1 Step 2
ControlClick($hMdiClient, "", $aAfx[$i*3+1])
;~ ControlFocus($hWnd, "", $aAfx[$i*3+1])
;~ If @error Then ConsoleWrite("Элемент не найден" & @LF)
;~ Sleep(500)
ControlMove($hWnd, "", $aAfx[$i*3+1], $aPosMdiClient[0] + $iWidth*Floor($i/2), $aPosMdiClient[1], $iWidth, $iHeight)
Sleep(500)
ControlClick($hMdiClient, "", $aAfx[($i+1)*3+1])
;~ ControlFocus($hWnd, "", $aAfx[($i+1)*3+1])
;~ Sleep(500)
ControlMove($hWnd, "", $aAfx[($i+1)*3+1], $aPosMdiClient[0] + $iWidth*Floor($i/2), $aPosMdiClient[1] + $iHeight, $iWidth, $iHeight)
Sleep(500)
Next
А после выполнения скрипта, к тому же, в этих окошка замирает изображения. И восстановить получается только свернув его и заново восстановив.
Подскажите, какие ещё есть способы перемещения?