Что нового

Переместить элемент внутри окна приложения

edyapd

Осваивающий
Сообщения
380
Репутация
30
Есть окно приложения. Внутри него есть область в которой открываются свои окна. Этих окошек можно открыть разное количество и с разными размерами. Хочу их упорядочить с помощью 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
Дескриптор этих окошек получается получить. Там их даже три на одно окошко. А вот кликнуть мышкой, установить фокус, переместить/изменить размер, не получается.
А после выполнения скрипта, к тому же, в этих окошка замирает изображения. И восстановить получается только свернув его и заново восстановив.
Подскажите, какие ещё есть способы перемещения?
 
Верх